Generalized multi-threshold decoder for low-density parity check codes

ABSTRACT

Methods, apparatus, and systems are provided for error correction of a communication signal. A generalized multiple threshold scheme for iteratively decoding a received codeword may include generating a bit reliability based on a channel output reliability and an updated bit reliability from a previous decoding iteration, where the bit reliability is updated using a scaling factor and a comparison with a threshold. The threshold may have a plurality of threshold values during the iterative decoding.

This application is a U.S. National Stage Filing under 35 U.S.C. 371from International Patent Application Serial No. PCT/RU2005/000668,filed Dec. 26, 2005, and published on Jul. 5, 2007 as WO 2007/075098 A1,which is a Continuation-In-Part application of co-pending and commonlyassigned application, PCT Application no. PCT/RU2004/000123, entitled:“MULTI-THRESHOLD RELIABILITY DECODING OF LOW-DENSITY PARITY CHECKCODES,” filed 31 Mar. 2004, both of which are hereby incorporated byreference in their entirety.

RELATED APPLICATIONS

This application is related to the following, co-pending, and commonlyassigned application: PCT/RU2004/000536, entitled: “CHANNEL ESTIMATIONAND FIXED THRESHOLDS FOR MULTI-THRESHOLD DECODING OF LOW-DENSITY PARITYCHECK CODES,” filed 28 Dec. 2004.

TECHNICAL FIELD

Embodiments of the invention relate generally to error correcting incommunication signals.

BACKGROUND

A communication channel, whether it is a fiber optic channel, a co-axialchannel, a wired channel, a wireless channel, or a bus connectinglocations in a system over which large amounts of data are transferred,can add noise and error to information being transmitted over thechannel. To correct for errors added by the communication channel,information can be sent in the form of codewords, where each codewordcontains the same number of total bits and in which a number of the bitsare information (message) bits and a number of bits are used for errorcorrection. A codeword having a length of n bits includes k bits for themessage length of the code and r=n−k redundant bits. The r bits are forcorrection and may be r parity check bits. A parity check matrix, H,contains a set of parity check equations that define the codewordaccording to the relation:HC^(T)=0,where C is the n-dimensional vector of the codeword bits. At a receiverif this relation is not satisfied, then the received codeword is notvalid and must either be corrected or retransmitted.

A variety of schemes for decoding a codeword that has propagated througha communication channel exist. Some schemes may provide accuracy, andother schemes may provide fast decoding. In high speed datacommunication what is needed is a decoding scheme that is accurate andfast, but at the same time can be implemented without a significantamount of complexity.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 shows a flow diagram of an embodiment of a method for iterativelydecoding information received from a communication channel.

FIG. 2 illustrates an embodiment of an apparatus for iterativelydecoding information received from a communication channel.

FIG. 3 shows a flow diagram of an embodiment of a method for encodinginformation to transmit a codeword representative of the informationonto a communication channel.

FIG. 4 illustrates an embodiment of an apparatus for encodinginformation that is iteratively decoded using multiple values for athreshold at a receiving end of a communication channel.

FIG. 5 illustrates a block diagram of an embodiment of a communicationnetwork having a system for encoding a low-density parity check codewordand a system for decoding a version of the encoded low-density paritycheck codeword received from a communication channel between the twosystems.

FIG. 6 illustrates a flow diagram of an embodiment of a method foriteratively decoding a low density parity check codeword using a decoderthat may be configured as in FIG. 5.

FIG. 7 shows a flow diagram of an embodiment of a method for iterativelydecoding information received from a communication channel using a setof fixed thresholds.

FIG. 8 shows a flow diagram of an embodiment of a method for selectingmultiple thresholds to iteratively decode information received from acommunication channel.

FIG. 9 shows a block diagram of an embodiment of an apparatus having adecoder and threshold module to iteratively decode information usingfixed multiple thresholds.

FIG. 10 shows a block diagram of an embodiment of an apparatus having achannel estimation unit to provide information to a decoder to selectmultiple thresholds to iteratively decode information.

FIG. 11 illustrates a block diagram of an embodiment of a network inwhich information is encoded at one end of a channel and decoded atanother end of the channel.

FIG. 12 illustrates features of an embodiment of a method forgeneralized multi-threshold decoding.

FIG. 13 shows the performance of an embodiment of a generalizedmulti-threshold decoding scheme, an embodiment of a multi-thresholddecoding scheme, and a belief propagation decoding scheme for binaryphase shift keying modulation and an additive white Gaussian noisechannel in the case of a floating point implementation.

FIG. 14 shows the performance of an embodiment of a generalizedmulti-threshold decoding scheme and a belief propagation decoding schemefor binary phase shift keying modulation and an additive white Gaussiannoise channel in the case of a fixed point implementation.

FIG. 15 illustrates a block diagram of an embodiment of a system havinga decoder using a generalized multi-threshold decoding scheme.

DETAILED DESCRIPTION

The following detailed description refers to the accompanying drawingsthat show, by way of illustration, specific details and embodiments inwhich the invention may be practiced. These embodiments are described insufficient detail to enable those skilled in the art to practice thepresent invention. Other embodiments may be utilized and structural,logical, and electrical changes may be made without departing from thescope of the invention. The various embodiments disclosed herein are notnecessarily mutually exclusive, as some disclosed embodiments can becombined with one or more other disclosed embodiments to form newembodiments. The following detailed description is, therefore, not to betaken in a limiting sense, and the scope of the embodiments of thepresent invention is defined only by the appended claims, along with thefull scope of equivalents to which such claims are entitled.

Low-density parity check (LDPC) codes provide a powerful forward errorcorrecting tool in high-speed communication systems due to the lowdecoding complexity and the bit-error rate (BER) achieved in an additivewhite Gaussian noise (AWGN) channel. Conventional LDPC decoders workusing a one-threshold decoding scheme. Examples of known LDPC decodersinclude, among others, the min-sum algorithm, the a posterioriprobability (APP) decoding algorithm, and the uniformly most powerful(UMP) decoder.

LDPC codes use a parity check matrix containing mostly zeros and alimited number of ones. A binary (n, γ, ρ) LDPC code has a codewordlength, or block length, of n bits and a parity check matrix withexactly γ ones in each column and exactly ρ ones in each row. In theLDPC code, each code bit is checked by γ parity checks and each paritycheck uses ρ code bits. Further, the code has a rate, R, defined asR=k/n, where k is the number of message (information) bits in thecodeword having n bits.

An iterative decoding process may include checking as to whether or notthe parity check equation for each received bit from a channel issatisfied. If all the parity check equations are satisfied, the receivedbits are taken to be the codeword transmitted. If the majority of paritycheck equations for a given received bit are not satisfied, the givenreceived bit may be flipped; otherwise the value of the given receivedbit is maintained. Flipping a bit means changing a zero to a one or aone to a zero. After the codeword is reconstructed with the flipping ofa bit, the parity check equations are again checked. If all the paritycheck equations are satisfied, the received bits are taken to be thecodeword transmitted, otherwise the iterative procedure continues untila maximum number of allowed iterations is reached.

In LDPC decoding, a belief propagation decoding (BPD) algorithm can beemployed using probabilistic values. Typically, iterative decoding of anLDPC code deals with determining the most likely vector x, where Hx^(T)mod 2=0. The likelihood of x may be given by the product ofprobabilities that for each bit location, n, x_(n)=x. For a binarycodeword, x takes of the value of 0 and 1, so that the probability thatx=1 equals one minus the probability that x=0. Further, theprobabilistic values may be represented by log-likelihood ratios. For abinary signal with p defined as the probability of a 1, then alog-likelihood ratio (LLR) can be given byLLR(P)=log_(e)((1−p)/p).Sum-product decoding performs decoding using LLR values.

With respect to the process regarding flipping a received bit discussedabove, an initial hard decision was made on the signal received from thecommunication channel. A hard decision is made on a bit by evaluatingthat bit individually. For a hard decision for a binary bit, the decodermakes the bit a 1 or a 0 if the bit is less than or greater than a fixedvalue set by the decoder. With the fixed value set by the decoder atzero, a hard decision would set a bit equal to 1 if the received signalfor the bit is positive and set the bit equal to 0 if the receivedsignal is negative. Alternately, a hard decision may set a bit equal to1 if the received signal for the bit is negative and set the bit equalto 0 if the received signal is positive.

A soft decision is one in which the likelihood that a bit shouldrepresent a one or zero is taken into account when determining the valueof the bit from the received signal. Soft decision decoders may useinformation relating to the confidence of the received signal (softreceived information) and knowledge of the properties of the channel toprovide probabilistic expressions for a received signal relative to thetransmitted signal. While a hard decision for a binary process providesa hard decision vector where the vector locations, or vector bits, areeither a one or a zero, a soft decision may provide a hard decisionvector and a reliabilities, or bits reliabilities, vector. The binaryhard decision vector provided by the soft decision is a vector of onesand zeros, where each vector bit is generated individually with respectto a fixed criteria. The reliabilities vector includes a set of bitreliabilities, each bit reliability corresponding to a bit of theassociated hard decision vector. The bit reliability provides a measureof its confidence of the corresponding bit in the hard decision vector.The bit reliability may tale the form of a probability, a log-likelihoodratio, or other weighted factor correlated to the communication channelthrough which a received codeword is transmitted. A bit reliability maybe correlated directly to the magnitude of the signal representing areceived bit.

As is known to those skilled in the art, various decoding schemesimplement soft decoding schemes using probabilities. One scheme in itssoft decision processes computes the a posteriori probability for eachcodeword bit, which is the probability that the given bit is a oneconditioned on the event that all parity check constraints aresatisfied. An intrinsic or a priori probability is the bit probabilityindependent of code constraints and an extrinsic probability representswhat has been learnt. For example, in a sum-product algorithm fordecoding, a log-likelihood ratio, LLR, of a received signal representinga bit is set based on knowledge of the channel. For an AWGN channel witha signal-to-noise ratio, SNR, the initial LLR for that bit may be set to

${{LLR}_{i} = \frac{2\; Y_{i}}{\sigma^{2}}},$where Y_(i) is the received signal, σ is the AWGN standard deviation.The standard deviation can be defined via AWGN SNR as

${\sigma = \sqrt{\frac{n}{2 \cdot 10^{{SNR}/10} \cdot k}}},$where n is the code length, k is the message length, and SNR is the SNRper message bit. The LLR_(i) are functionally related to thereliability, R_(i), of bit i. The reliability is a measure of theconfidence in the value of the bit. Iterative decoding in variousschemes includes updating the reliability corresponding to receivedbits, and/or updating the reliability corresponding to non-zero elementsof the parity check matrix, H. Such iterative processes includingchecking an updated test codeword, x, for validity via the relation,Hx^(T)=0. If the test does not result in a valid codeword, the iterativeprocess continues until a valid codeword is obtained or a maximum numberof iterations is made.

In an embodiment, a multi-threshold decoder is constructed to provide aniterative decoding algorithm with reduced complexity and gooderror-correcting properties for decoding LDPC codes from a soft-outputchannel. This embodiment for a multi-threshold reliability decoder forfast LDPC decoding operates using a soft channel output, a softdecision, to produce a hard-decision vector and a reliabilities vectorof the bits received. The bit reliabilities are used to calculate paritycheck reliabilities, and an overall parity check reliability is set at aminimum bit reliability value of all bits which are involved in a givenparity check. To recalculate bit reliabilities a weighted parity checkvoting procedure is used, where the weights are the parity checkreliabilities. In such embodiments, as the weight of the parity checkweight is decreased, the decoding quality is increased. Initially, thebit reliability is assigned to a bit reliability correlated to the valueof the bit received. The parity check voting is applied to the currenthard-decision vector. Based on the parity check voting compared with athreshold value at the given iteration, the bit reliability is set to arecalculated bit reliability that is increased by a parity checkreliability value; otherwise the recalculated bit reliability isdecreased by the parity check reliability value.

For each iteration, threshold values are provided, where the thresholdvalues may be calculated during one or more iterations. The thresholdvalues are used for making the decisions as to whether a bit and itsassociated reliability should be updated. If a particular reliability isless than the threshold value, then the hard decision bit associatedwith the reliability is inverted and its new reliability is assigned tothe absolute value of the recalculated reliability. The decoding schemeis iterative, and the thresholds may differ from one iteration toanother, where at least two values of the threshold are provided orscheduled for calculation during the decoding process. Though thethresholds may be calculated during the iteration, these values also maybe predefined. In another embodiment, at the first iteration theerror-decision threshold is set to the smallest of the bitreliabilities, and then, at all other iterations, the error-decisionthreshold is set to zero. In this embodiment, tie multi-thresholddecoding scheme would be a decoding scheme using two thresholds. The twothreshold scheme leads to 0.1-0.4 dB bit error rate gain compared tofast decoding without a threshold having multiple values.

An embodiment for a novel scheme that can be implemented in LDPCdecoders includes a multi-threshold decision scheme. By multi-thresholddecision scheme, it is meant that a threshold value is changed to acomputed value or a predefined value during one or more decodingiterations. In an embodiment, during the first iteration a maximumthreshold value (by absolute value) is used acid in followingiterations, a change of threshold is applied in which the thresholddecreases. Changing the threshold values allows the use of a highthreshold value dining the first iteration leading to an absence, orreduction, of error propagation. Thus, if the decoder corrects even asmall number of errors, the decoding at following iterations becomessignificantly easier. Use of an embodiment of the multi-thresholddecoding scheme may lead to a decrease in the number of iterations madeduring decoding. These embodiments may be realized with a decoding biterror rate close to that of a maximum a posteriori (MAP) decodingscheme.

In an embodiment, a multi-threshold decoder provides an iterativedecoder that uses a soft-decision input vector to generate a harddecision vector and its associated reliabilities vector that describesthe absolute likelihood value of every bit. At every iteration, thedecoder computes the reliability of every parity check equation usingthe bit reliabilities. Then, for every bit and every parity check, if aparity check equation failed, the corresponding bit reliability(corresponding to a bit or parity check equation) is decreased;otherwise the bit reliability is increased. When all equations arechecked, a hard decision is made using the following rule: if theupdated bit reliability is greater than a threshold value, the bit andits reliability stay unchanged, otherwise the bit is flipped (inverted),and its reliability is changed as a function of the updated reliabilityand threshold value. If the updated reliability is less than 0 butlarger than the threshold value at that iteration, then the new bitreliability is set to 0. The threshold value is scheduled to be updatedat least once during the decoding process. The process is repeated untilthe codeword is reconstructed or the decoder reaches the maximum allowednumber of iterations.

FIG. 1 shows a flow diagram of an embodiment of a method for iterativelydecoding information received from a communication channel. At 110, acodeword is received. The codeword may contain a number of information,or message, bits acid a number of bits for use in error detection and/orcorrection. At 120, a value for a threshold is selected. In anembodiment, a value for the threshold is selected using bitreliabilities correlated to the received codeword during each iteration.The selection may be conducted by calculating a minimum comparisonreliability, initially constructed from a soft decision processperformed on the received codeword that generates a hard decision vectorand a reliabilities vector. The bit reliabilities may be correlated tothe communication channel. In an embodiment, the bit reliabilities aregenerated using known, calculated, or estimated properties of thecommunication channel, such as, but not limited to, the signal to noiseratio associated with signals propagating through the communicationchannel. In another embodiment, a set of bit reliabilities is initiallycorrelated to a set of received bits, such as, but not limited to, theabsolute value of the signal received for each bit position. In anembodiment, the threshold call be selected as one of a pre-determinedset of values, where the selection depends on the given codeconstruction, SNR of the channel, and decoding iteration number.

At 130, a bit reliability that has been generated from the receivedcodeword is updated based on a comparison with the threshold value. Invarious embodiments, a set of bit reliabilities may be generated,compared with the threshold, and updated. At 140, the codeword isreconstructed based on comparisons of computed bit reliabilities withthe threshold, where the computed bit reliabilities are derived from theinitially generated bit reliabilities. If the reconstructed codeworddoes not pass a validity test, the process continues with anotheriteration. The reconstructed codeword may be generated by inverting oneor more bits of the version of the codeword in the given iteration. At150, a reconstructed codeword is provided at the end of the iterativedecoding process. If the decoding process is successful, thereconstructed codeword is taken to be the codeword provided at atransmitting location at another end of the communication channel. Ifthe iterative decoding process does not provide a valid codeword at theend of a number of iterations, a retransmission of the codeword would beappropriate. In an embodiment, the method is used to decode an LDPCcodeword.

FIG. 2 illustrates an embodiment of an apparatus 200 for iterativelydecoding information received from a communication channel. Apparatus200 includes a receiver 210, a bit reliability generator 220, and acomparison unit 230. Receiver 210 acquires data from a communicationchannel. In an embodiment, the acquired data is in the form of bits in asignal stream, where the bits define a codeword. Alternately, receiver210 may receive a signal and convert the received signal to a codeword.Bit reliability generator 220 generates one or more bit reliabilitiesassociated with the codeword received. In an embodiment, initial bitreliabilities are generated based on the received codeword and alikelihood ratio related to the probabilities that a binary signal is aone or a zero. Such bit reliabilities may also be correlated to asignal-to-noise ratio of the communication channel from which thereceived codeword is received. Alternately, initial bit reliabilitiescall be generated from the received codeword such as by setting theinitial bit reliabilities to the absolute value of the received codewordfor each bit.

Comparison unit 230 compares bit reliabilities generated from bitreliability generator against a threshold. Subsequent to thiscomparison, comparison unit 230 updates the bit reliabilities and thebits of a test codeword depending on the results of the comparison witha value of the threshold. Comparison unit 230 uses multiple values forthe threshold, depending on a current iteration in the decoding process.The updated bits of the test codeword are evaluated to determine if theupdated bits have provided a valid codeword. If a valid codeword hasbeen generated, comparison unit 230 may output the valid codeword orextract the information (message) bits from the codeword and output themessage. Comparison unit 230 may be realized in a hardware configurationor in a software configuration. In an embodiment, the values for thethreshold used by comparison unit 230 are set according to the iterationin which the value is used. A table of thresholds can be usedassociating a pre-determined value with an iteration number specifiedfor a given code constriction and a given situation in the channel suchas the SNR of the channel. In another embodiment, the values for thethreshold used by comparison unit 230 are set using the bitreliabilities and the result of a comparison with the threshold valueset for the decoding iteration at which comparison unit 230 isoperating. In an embodiment, the apparatus 200 decodes an LDPC codeword.

FIG. 3 shows a flow diagram of an embodiment of a method for encodinginformation to transmit a codeword representative of the informationonto a communication channel. At 310, information is received at anencoder in the form of information bits. At 320, the information bitsare encoded to provide a codeword. The encoding is realized in a mannersuch that a version of the encoded codeword upon being received isiteratively decoded using a bit reliability updated by comparison with athreshold, where the threshold is updated to provide multiple valuesduring the iterative process. If the version of the codeword is receivedwithout error at another end of the communication channel on which thecodeword was transmitted, the iterative decoding may provide thecodeword without correcting the received version of the codeword. If thereceived version of the transmitted codeword includes errors, theiterative decoding process using multiple thresholds provides acorrection process. At 330, the codeword is transmitted onto thecommunication channel. In an embodiment, the method is used to encode anLDPC codeword.

FIG. 4 illustrates an embodiment of an apparatus 400 for encodinginformation that is iteratively decoded using multiple values for athreshold at a receiving end of a communication channel. Apparatus 400includes a receiver 410 to acquire information to encode, an encoder420, and a transmitter 430. Receiver 410 acquires data provided toapparatus 400 to transmit over a communication channel. Encoder 420takes the information and generates an encoded word that containsinformation, message bits and bits for correction at a receiving end ofa transmission channel. The information supplied to encoder 420 may bein the form of information bits. Alternately, encoder 420 may take thesupplied information and construct the information bits. Encoder 420encodes the information into a codeword such that a version of thecodeword upon being received is iteratively decoded using a bitreliability updated by comparison with a threshold. The threshold isupdated to provide multiple values during the iterative process.Transmitter 430 sends the encoded codeword onto a communication channel.

The communication channel between apparatus using an embodiment of adecoding method using multiple thresholds and apparatus using anembodiment of an encoding method associated with the decoding method mayinclude, but is not limited to, a fiber optic channel, a wired channel,a channel reading data stored on a memory unit, or a wireless channel.Additionally, embodiments for decoding and encoding may be adapted foruse with any protocol for transmission over any communication channel.

FIG. 5 illustrates a block diagram of an embodiment of a communicationnetwork 500 having a system 502 for encoding a low-density parity checkcodeword and a system 520 for decoding a version of the encodedlow-density parity check codeword received from a communication channel505 between the two systems. An information source provides informationbits 508 to an LDPC encoder 510 of system 502. LDPC encoder 510 includesan encoding procedure 512 that uses a H-matrix construction 514 togenerate a codeword that is transmitted onto channel 505. H-matrixconstruction 514 is developed using LDPC code parameters 514 that areprovided to system 502 and system 520.

System 520 includes an LDPC decoder 522 that uses LDPC code parameters514. The LDPC code parameters are used by the H-matrix construction 524in LDPC decoder 522. A received codeword from channel 505 is provided toan initial decision unit 526 to make soft decisions resulting in harddecisions 528 and reliability decisions 530. Hard decisions 528 are theinitial binary bits for a test codeword and reliability decisions areinitial bit reliabilities associated with the bits of the test codeword.In an embodiment, hard decisions 528 are binary bits set according tothe sign of the corresponding bit of the received codeword. A receivedbit having a positive value is set to a one and a received bit having azero value or a negative value is set to zero. Alternately, a receivedbit having a zero value or a positive value is set to a zero and areceived bit having a negative value is set to one. The initial bitreliabilities for each bit of the received codeword may be set to theabsolute value of the corresponding bit of the received codeword.

Hard decisions 528, reliability decisions 530, H-matrix construction 524are provided to a multi-threshold decoder 532 to conduct an iterativedecoding process to provide information bits 508 from system 520.Multi-threshold decoder 532 uses thresholds 534 against whichconstructed reliabilities are compared, and bit reliabilities areupdated and bits for a test codeword are updated. The constructedreliabilities are developed from the bit reliabilities. In anembodiment, the constructed reliabilities are developed from the initialreliability decisions and calculated check sums. The bits for a testcodeword are generated from hard decisions 528 with bits flippedaccording to the comparisons with the value of the threshold at eachiteration. In an embodiment, thresholds 534 are calculated based on thecomparison of the constructed bit reliabilities and the value of thethreshold for a given iteration. In an embodiment, one set of thresholds534 are calculated based on the comparison of the constructed bitreliabilities and the value of the threshold for a given iteration andused in a number of other iterations. A second set of thresholds 534 isset at a fixed value, such as zero, and is used in a number of otheriterations. The fixed value for the threshold is used in the group ofiterations that form the last iterations in the decoding process.Alternately, thresholds 354 are set at pre-determined values dependingon the iteration in which the value of the threshold is used.

Various embodiments for communication network 500, system 502, andsystem 520 may be realized. Communication network 500 may be a landbased network using optical fibers, coaxial cable, or wires as a mediumfor the communication channels between various nodes of communicationnetwork 500. Communication network 500 may be realized as a wirelessnetwork in which systems 502 and 520 are configured as part of a node ofcommunication network 500 or as part of a wireless receiving device thatreceives signals from the nodes of communication network 500. System 502and system 520 may be configured as part of, but not limited to, networkcomponents such as base stations and may be configured as part of, butnot limited to, wireless receiving devices such as handheldcommunication devices, computers, and laptop computing devices. Thoughnot shown, systems 502 and 520 configured in a wireless communicationsystem 500 include antennas for transmitting and receiving signals thatinclude one more codewords. The decoding and encoding schemes andapparatus do not limit the type or configuration of supportingcomponents such as antennas in the 502, 520 systems. In an embodiment, asubstantially omnidirectional antenna is utilized.

Each node of communication network 500 configured as a land basednetwork or as a wireless based network may contain a version of system502 and/or a version of system 520 or a system that is a combination ofsystem 502 and system 520. Additionally the decoding and encodingprocesses used in the encoders and decoders of system 502 and system 520and other embodiments for decoding and encoding processes and apparatusas described herein may be adapted for the communication standards andprotocols used in communication network 500.

FIG. 6 illustrates a flow diagram of an embodiment of a method that canbe used with an LDPC decoder, such as LDPC decoder 522 as configured asin FIG. 5. At 610, all initial hard decision vector and an initialreliabilities vector is constructed. For a received codeword, Y=(Y₁, Y₂,. . . , Y_(n)), let N(m) be the set of codeword positions that are usedin an m^(th) parity check: N(m)={n:H_(m,n)=1}, where H is the paritycheck matrix such as provided from H-matrix construction 524 in FIG. 5and H_(m,n)=1 means the value of the H matrix at the m,n position equalsone. Further, let M(n) be the set of parity checks that includes n^(th)codeword position: M(n)={m:H_(m,n)=1}.

At initialization, for every element, Y_(i), of the received vector suchas received at the LPDC decoder 522 of FIG. 5, a hard decision X_(i) anda bit reliability R_(i) are computed. The bit reliability R_(i) is setto the absolute value of Y_(i). The hard decision may set X_(i) equal toone if Y_(i) is greater than zero, and X_(i) equal to zero if Y_(i) isless than or equal to zero. For every mεM(n), a parity check bitreliability is defined as Y_(mn), where initially Y_(mn)=R_(n), and anassociated hard decision is defined as X_(mn), where initiallyX_(mn)=X_(n).

After the initialization, at 620, an iterative process begins withperforming a parity check reliabilities calculation. In an embodiment,for each n and each mεM(n), check sums, S_(mn) are calculated as:

S_(mn)=X_(n)⊕ΣX_(mn′) mod 2, where the summation is over n′ εN(m)\n. Anexpression N(m)\n means a set N(m) where bit n is excluded. A value forthe minimum of Y_(mn) is identified as:Y_(mn min)=min{Y_(mn′)} for n′εN(m)\n.At 630, a threshold is calculated. In an embodiment, the threshold isset to the minimum value, over all n, of the set of an updated bitreliabilities defined for each n as,Z _(n) =R _(n)+Σ(−1)^(Smn) Y _(mn min) for mεM(m).These updated bit reliabilities will also act as comparisonreliabilities in the decoding process. In an embodiment, the multi-valuethreshold is provided by computing a value for the threshold during eachiteration of the decoding process. This is an adaptive approach. In anembodiment, the multi-value threshold may be provided by computing avalue for the threshold during the first iteration using the updated bitreliabilities and provided as a fixed value, such as zero, for theremaining iterations. In an embodiment, the multi-value threshold may beprovided by computing a value for the threshold during the firstiteration using updated bit reliabilities and using that value for thefirst half of the total number of iterations, and, then, using a fixedvalue, such as zero, for the last half of the total iterations.

In an embodiment, the multi-value threshold may be provided by using apre-determined set of thresholds, where the value used is correlated tothe iteration number in which it is applied. In an embodiment,pre-determined values are assigned according to parameters of thecommunication channel from which the received codeword is acquired.These parameters may include a set of signal-to-noise ratios, a set ofother channel parameters, or a set of standard deviations correlated tochannel parameters. In an embodiment, the pre-determined set ofthresholds may be determined through a simulation process. One suchprocess may include simulating the decoding process to provide a set ofthresholds for a given signal-to-noise ratio, and setting the thresholdfor the given signal-to-noise ratio as the mean of the set of simulatedthresholds. The process can be conducted for each signal-to-noise ratioin a set of signal-to-noise ratios. Other statistical variations insimulated thresholds for the decoding process may be implemented. Thesepre-determined values, from whichever embodiment is used to providethese values, may be stored in a table. In addition to softwareimplementation, these tables facilitate hardware implementations using ashort lookup table.

In an embodiment, the thresholds are selected for multiple operatingmodes for decoding. In one mode, the decoding corrects one or twoerrors. In this mode, the decoding process does not insert additionalerrors in a codeword vector. In another mode, the decoding processcorrects more than one error in one iteration, and may correct one totwo errors in a subsequent iteration.

Various combinations for providing the multiple threshold values duringthe iteration process can be used depending on the allowable complexitydesired for a given application.

At 640, parity check bit reliability updating is performed. A set ofcomparison reliabilities are computed with contribution from the paritycheck reliabilities, which can be viewed as parity check voting. Foreach n and each mεM(n), Z_(mn) is defined asZ _(mn) =R _(n)+Σ(−1)^(Sm′n) Y _(m′n min) for m′εN(n)\m.For each n, the parity check bit reliabilities are updated as are theassociated hard decisions X_(mn) based on the comparison reliabilities,Z_(mn). Updating a reliability or a hard decision includes maintainingthe value of the reliability or the hard decision, if the comparisonindicates that the reliability or the hard decision should remain thesame.

$Y_{mn} = \left\{ {{\begin{matrix}{Z_{mn},} & {Z_{mn} > 0} \\{{- Z_{mn}},} & {Z_{mn} < {threshold}} \\{0;} & {otherwise}\end{matrix}X_{mn}} = \left\{ \begin{matrix}{X_{mn},} & {Z_{{mn}\;} > {threshold}} \\{{1 - X_{mn}},} & {Z_{{mn}\;} < {threshold}}\end{matrix} \right.} \right.$At 650, a new hard decision vector, C, is generated based on thecomparison reliabilities, or updated bit reliabilities, Z_(n), as

$C_{i} = \left\{ \begin{matrix}{X_{i},} & {Z_{i\;} > 0} \\{{1 - X_{i}},} & {Z_{i\;} < 0.}\end{matrix} \right.$Updating a bit includes maintaining the value of the bit, if thecomparison indicates that the bit should remain the same. The termsC_(i) provide the bits of a test codeword to determine if a validcodeword has been generated. At 660, the test codeword is evaluated forvalidity. If the following relation occurs,CH^(T)≠0,the iterative process returns to 620 using the updated parity checkreliability values.

Another embodiment of a method for iteratively decoding an LDPC codewordusing a threshold having multiple values includes having the thresholdtake on only two values during the iteration process. A first value isset at the minimum of the updated reliabilities, Z_(n), for the Z_(n)generated in the first iteration prior to malting decision comparisons.A second value is set at zero for subsequent iterations. Such anembodiment provides a 0.5 dB gain in decoding time comparing to otherknown fast decoding schemes having substantially the same complexity.

Embodiments for a multiple threshold scheme decode any LDPC code inevery situation. However, for a predefined code and known channelproperties, the thresholds can be selected more precisely. In thevarious embodiments, the number of iterations may be taken to be log₂ n,where n is codeword length. This provides a maximum number of iterationsto perform before terminating the iteration prior to reconstructing avalid codeword. Experiments show that threshold truing and optimizationprovide enhanced BER gain, but finding the exact dependency ofthresholds, code structure, and channel properties is applicationdependent.

Various embodiments or combination of embodiments for apparatus andmethods for decoding and encoding communication signals using amultiple-threshold scheme, as described herein, can be realized inhardware implementations, software implementations, and combinations ofhardware and software implementations. These implementations may includea computer-readable medium having computer-executable instructions forperforming a decoding and/or encoding method using an embodiment for ascheme using multiple thresholds for iterative decoding. Thecomputer-readable medium is not limited to any one type of medium. Thecomputer-readable medium used will depend on the application using anembodiment of the multiple thresholds scheme. In an embodiment, aprocessor coupled to a receiver and/or transmitter may utilize variousforms of memory to which it is coupled and the computer-readable mediumto direct decoding and/or encoding of information for data transmission.In an embodiment, the memory may store parameters used to iterativelydecode the received codeword.

Though an embodiment of a method using a multi-valued threshold can beused with any LDPC code, the following is presented as a non-limitingexample. This example provides an embodiment of a decoding method usinga multi-threshold decoder on a low-density parity check code based onReed Solomon codes with two information symbols (RS-LDPC code). This isan example of a (n, γ, ρ) RS-LDPC code with n=32, γ=4, and ρ=3, with arate, R, of approximately 0.4, and parity check matrix:

$\begin{matrix}{H_{{RS}\text{-}{LDPC}} = 10000000} & 10000000 & 10000000 & 10000000 \\00001000 & 00000010 & 00000100 & 01000000 \\00000100 & 00000001 & 00000010 & 00100000 \\00000010 & 01000000 & 00000001 & 00010000 \\00000001 & 00100000 & 01000000 & 00001000 \\01000000 & 00010000 & 00100000 & 00000100 \\00100000 & 00001000 & 00010000 & 00000010 \\00010000 & 00000100 & 00001000 & 00000001 \\10000000 & 00001000 & 00000001 & 01000000 \\00001000 & 00000001 & 01000000 & 10000000 \\00000100 & 00000010 & 00001000 & 00000010 \\00000010 & 00010000 & 10000000 & 00001000 \\00000001 & 00000100 & 00000100 & 00010000 \\01000000 & 01000000 & 00010000 & 00000001 \\00100000 & 10000000 & 00100000 & 00100000 \\00010000 & 00100000 & 00000010 & 00000100 \\10000000 & 00000100 & 01000000 & 00100000 \\00001000 & 00010000 & 00000001 & 00000010 \\00000100 & 01000000 & 00100000 & 10000000 \\00000010 & 00000001 & 00000100 & 00000001 \\00000001 & 00001000 & 10000000 & 00000100 \\01000000 & 00000010 & 00000010 & 00001000 \\00100000 & 00100000 & 00001000 & 01000000 \\00010000 & 10000000 & 00010000 & 00010000\end{matrix}$For this example the received vector, Y={Y_(i)} has a codeword length of32:

-   -   +0.22 +1.47 +0.52 +0.83 −2.38 +0.71 +1.44 −1.95    -   +0.08 −0.14 +1.19 +0.19 −1.86 −0.16 +0.94 +0.05    -   +1.01 −0.42 +0.78 −1.54 −0.84 +1.44 +1.65 −0.45    -   +0.94 −2.08 −1.31 +1.91 −0.69 +1.04 +1.39 +0.83        In this embodiment, the number of iterations is set at log₂ n,        where n is the codeword length. For n=32, the number of        iterations is 5. Thresholds for iterations 1, 2, and 3 are set        at the minimum of the updated bit reliabilities, Z_(n), computed        in the first iteration. The thresholds for iterations 4 and 5        are set at 0.

At initialization the hard decision vector, X={X_(i)} is

-   -   1111011010110011    -   1010011010010111        the bit reliabilities, R_(i), are    -   +0.22 +1.47 +0.52 +0.83 +2.38 +0.71 +1.44 +1.95    -   +0.08 +0.14 +1.19 +0.19 +1.86 +0.16 +0.94 +0.05    -   +1.01 +0.42 +0.78 +1.54 +0.84 +1.44 +1.65 +0.45    -   +0.94 +2.08 +1.31 +1.91 +0.69 +1.04 +1.39 +0.83        and the parity check reliabilities are initially set as

-   Y_(mn):

Y[0, 0]=+0.22 Y[0, 8]=+0.08 Y[0, 16]=+1.01 Y[0, 24]=+0.94

Y[1, 4]=+2.38 Y[1, 14]=+0.94 Y[1, 21]=+1.44 Y[1, 25]=+2.08

Y[2, 5]=+0.71 Y[2, 15]=+0.05 Y[2, 22]=+1.65 Y[2, 26]=+1.31

Y[3, 6]=+1.44 Y[3, 9]=+0.14 Y[3, 23]=+0.45 Y[3, 27]=+1.91

Y[4, 7]=+1.95 Y[4, 10]=+1.19 Y[4, 17]=+0.42 Y[4, 28]=+0.69

Y[5, 1]=+1.47 Y[5, 11]=+0.19 Y[5, 18]=+0.78 Y[5, 29]=+1.04

Y[6, 2]=+0.52 Y[6, 12]=+1.56 Y[6, 19]=+1.54 Y[6, 30]=+1.39

Y[7, 3]=+0.83 Y[7, 13]=+0.16 Y[7, 20]=+0.84 Y[7, 31]=+0.83

Y[8, 0]=+0.22 Y[8, 12]=+1.86 Y[8, 23]=+0.45 Y[8, 25]=+2.08

Y[9, 4]=+2.38 Y[9, 15]=+0.05 Y[9, 17]=+0.42 Y[9, 24]=+0.94

Y[10, 5]=+0.71 Y[10, 14]=+0.94 Y[10, 20]=+0.84 Y[10, 30]=+1.39

Y[11, 6]=+1.44 Y[11, 11]=+0.19 Y[11, 16]=+1.01 Y[11, 28]=+0.69

Y[12, 7]=+1.95 Y[12, 13]=+0.16 Y[12, 21]=+1.44 Y[12, 27]=+1.91

Y[13, 1]=+1.47 Y[13, 9]=+0.14 Y[13, 19]=+1.54 Y[13, 31]=+0.83

Y[14, 2]=+0.52 Y[14, 8]=+0.08 Y[14, 18]=+0.78 Y[14, 26]=+1.31

Y[15, 3]=+0.83 Y[15, 10]+1.19 Y[15, 22]=+1.65 Y[15, 29]=+1.04

Y[1.6, 0]=+0.22 Y[16, 13]=+0.16 Y[16, 17]=+0.42 Y[16, 26]=+1.31

Y[17, 4]=+2.38 Y[17, 11]=+0.19 Y[17, 23]=+0.45 Y[17, 30]=+1.39

Y[18, 5]=+0.71 Y[18, 9]=+0.14 Y[18, 18]=+0.78 Y[18, 24]=+0.94

Y[19, 6]=+1.44 Y[19, 15]=+0.05 Y[19, 21]=+1.44 Y[19, 31]=+0.83

Y[20, 7]=+1.95 Y[20, 12]=+1.86 Y[20, 16]=+1.01 Y[20, 29]=+1.04

Y[21, 1]=+1.47 Y[21, 14]=+0.94 Y[21, 22]=+1.65 Y[21, 28]=+0.69

Y[22, 2]=+0.52 Y[22, 10]=+1.19 Y[22, 20]=+0.84 Y[22, 25]=+2.08

Y[23, 3]=+0.83 Y[23, 8]=+0.08 Y[23, 19]=+1.54 Y[23, 27]=+1.91

At the first iteration, the check sums are computed, and the minimumparity check reliabilities, Y_(mn-min), are determined as,

-   check sums, S_(mn):    -   S[0, 0]=0 S[0, 8]=0 S[0, 16]=0 S[0, 24]=0    -   S[1, 4]=0 S[1, 14]=0 S[1, 21]=0 S[1, 25]=0    -   S[2, 5]=1 S[2, 15]=1 S[2, 22]=1 S[2, 26]=1    -   S[3, 6]=0 S[3, 9]=0 S[3, 23]=0 S[3, 27]=0    -   S[4, 7]=1 S[4, 10]=1 S[4, 17]=1 S[4, 28]=1    -   S[5, 1]=0 S[5, 11]=0 S[5, 18]=0 S[5, 29]=0    -   S[6, 2]=0 S[6, 12]=0 S[6, 19]=0 S[6, 30]=0    -   S[7, 3]=0 S[7, 13]=0 S[7, 20]=0 S[7, 31]=0    -   S[8, 0]=1 S[8, 12]=1 S[8, 23]=1 S[8, 25]=1    -   S[9, 4]=0 S[9, 15]=0 S[9, 17]=0 S[9, 24]=0    -   S[10, 5]=1 S[10, 14]=1 S[10, 20]=1 S[10, 30]=1    -   S[11, 6]=1 S[11, 11]=1 S[11, 16]=1 S[11, 28]=1    -   S[12, 7]=0 S[12, 13]=0 S[12, 21]=0 S[12, 27]=0    -   S[13, 1]=0 S[13, 9]=0 S[13, 19]=0 S[13, 31]=0    -   S[14, 2]=1 S[14, 8]=1 S[14, 18]=1 S[14, 26]=1    -   S[15, 3]=0 S[15, 10]=0 S[15, 22]=0 S[15, 29]=0    -   S[16, 0]=1 S[16, 13]=1 S[16, 17]=1 S[16, 26]=1    -   S[17, 4]=0 S[17, 11]=0 S[17, 23]=0 S[17, 30]=0    -   S[18, 5]=1 S[18, 9]=1 S[18, 18]=1 S[18, 24]=1    -   S[19, 6]=0 S[19, 15]=0 S[19, 21]=0 S[19, 31]=0    -   S[20, 7]=0 S[20, 12]=0 S[20, 16]=0 S[20, 29]=0    -   S[21, 1]=1 S[21, 14]=1 S[21, 22]=1 S[21, 28]=1    -   S[22, 2]=0 S[22, 10]=0 S[22, 20]=0 S[22, 25]=0    -   S[23, 3]=1 S[23, 8]=1 S[23, 19]=1 S[23, 27]=1-   Y_(mn-min):    -   Y[0, 0]min=+0.08 Y[0, 8]min=+0.22 Y[0, 16]min=+0.08 Y[0,        24]min=+0.08    -   Y[1, 4]min=+0.94 Y[1, 14]min=+1.44 Y[1, 21]min=+0.94 Y[1,        25]min=+0.94    -   Y[2, 5]min=+0.05 Y[2, 15]min=+0.71 Y[2, 22]min=+0.05 Y[2,        26]min=+0.05    -   Y[3, 6]min=+0.14 Y[3, 9]min=+0.45 Y[3, 23]min=+0.14 Y[3,        27]min=+0.14    -   Y[4, 7]min=+0.42 Y[4, 10]min=+0.42 Y[4, 17]min=+0.69 Y[4,        28]min=+0.42    -   Y[5, 1]min=+0.19 Y[5, 11]min=+0.78 Y[5, 18]min=+0.19 Y[5,        29]min=+0.19    -   Y[6, 2]min=+1.39 Y[6, 12]min=+0.52 Y[6, 19]min=+0.52 Y[6,        30]min=+0.52    -   Y[7, 3]min=+0.16 Y[7, 13]min=+0.83 Y[7, 20]min=+0.16 Y[7,        31]min=+0.16    -   Y[8, 0]min=+0.45 Y[8, 12]min=+0.22 Y[8, 23]min=+0.22 Y[8,        25]min=+0.22    -   Y[9, 4]min=+0.05 Y[9, 15]min=+0.42 Y[9, 17]min=+0.05 Y[9,        24]min=+0.05    -   Y[10, 5]min=+0.84 Y[10, 14]min=+0.71 Y[10, 20]min=+0.71 Y[10,        30]min=+0.71    -   Y[11, 6]min=+0.19 Y[11, 11]min=+0.69 Y[11, 16]min=+0.19 Y[11,        28]min=+0.19    -   Y[12, 7]min=+0.16 Y[12, 13]min=+1.44 Y[12, 21]min=+0.16 Y[12,        27]min=+0.16    -   Y[13, 1]min=+0.14 Y[13, 9]min=+0.83 Y[13, 19]min=+0.14 Y[13,        31]min=+0.14    -   Y[14, 2]min=+0.08 Y[14, 8]min=+0.52 Y[14, 18]min=+0.08 Y[14,        26]min=+0.08    -   Y[15, 3]min=+1.04 Y[15, 10]min=+0.83 Y[15, 22]min=+0.83 Y[15,        29]min=+0.83    -   Y[16, 0]min=+0.16 Y[16, 13]min=+0.22 Y[16, 17]min=+0.16 Y[16,        26]min=+0.16    -   Y[17, 4]min=+0.19 Y[17, 11]min=+0.45 Y[17, 23]min=+0.19 Y[17,        30]min==+0.19    -   Y[18, 5]min=+0.14 Y[18, 9]min=+0.71 Y[18, 18]min=+0.14 Y[18,        24]min=+0.14    -   Y[19, 6]min=+0.05 Y[19, 15]min=+0.83 Y[19, 21]min=+0.05 Y[19,        31]min=+0.05    -   Y[20, 7]min=+1.01 Y[20, 12]min=+1.01 Y[20, 16]min=+1.04 Y[20,        29]min=+1.01    -   Y[21, 1]min=+0.69 Y[21, 14]min=+0.69 Y[21, 22]min=+0.69 Y[21,        28]min=+0.94    -   Y[22, 2]min=+0.84 Y[22, 10]min=+0.52 Y[22, 20]min=+0.52 Y[22,        25]min=+0.52    -   Y[23, 3]min=+0.08 Y[23, 8]min=+0.83 Y[23, 19]min=+0.08 Y[23,        27]min=+0.08        The threshold is calculated by first computing the updated bit        reliabilities (comparison bit reliabilities), Z_(n), as-   Z_(n):    -   −0.30 +1.10 +2.67 +1.94 +3.56 −0.32 +1.45 +2.70    -   −1.04 +0.71 +2.12 +0.72 +3.17 +2.20 +0.98 +0.59    -   +1.95 −0.37 +0.74 +2.12 +0.80 +2.59 +1.73 +0.55    -   +0.94 +3.32 +1.02 +2.12 −0.86 +3.06 +1.38 +1.18        From these values of Z_(n), the threshold is determined to be        equal to −1.04. The comparison reliabilities, Z_(mn), are formed        and the parity check reliabilities, Y_(mn), and associated hard        decisions, X_(mn), are updated as-   Z_(mn):    -   Z[0, 0]=−0.38 Z[0, 8]=−1.26 Z[0, 16]=+1.86 Z[0, 24]=+0.86    -   Z[1, 4]=+2.62 Z[1, 14]=−0.46 Z[1, 21]=+1.65 Z[1, 25]=+2.38    -   Z[2, 5]=−0.27 Z[2, 15]=+1.30 Z[2, 22]=+1.78 Z[2, 26]=+1.08    -   Z[3, 6]=+1.31 Z[3, 9]+0.25 Z[3, 23]=+0.41 Z[3, 27]=+1.98    -   Z[4, 7]=+3.12 Z[4, 10]=+2.54 Z[4, 17]=+0.32 Z[4, 28]=−0.44    -   Z[5, 1]=+0.92 Z[5, 11]=−0.05 Z[5, 18]=+0.55 Z[5, 29]=+2.88    -   Z[6, 2]=+1.27 Z[6, 12]=+2.65 Z[6, 19]=+1.60 Z[6, 30]=+0.87    -   Z[7, 3]=+1.78 Z[7, 13]=+1.37 Z[7, 20]=+0.65 Z[7, 31]=+1.02    -   Z[8, 0]=+0.15 Z[8, 12]=+3.39 Z[8, 23]=+0.78 Z[8, 25]=+3.54    -   Z[9, 4]=+3.50 Z[9, 15]=+0.17 Z[9, 17]=−0.42 Z[9, 24]=+0.89    -   Z[10, 5]=+0.52 Z[10, 14]=+1.69 Z[10, 20]=+1.51 Z[10, 30]=+2.10    -   Z[11, 6]=+1.64 Z[11, 11]=+1.41 Z[11, 16]=+2.13 Z[11, 28]=−0.67    -   Z[12, 7]=+2.54 Z[12, 13]=+0.76 Z[12, 21]=+2.44 Z[12, 27]=+1.96    -   Z[13, 1]=+0.96 Z[13, 9]=−0.12 Z[13, 19]=+1.98 Z[13, 31]=+1.04    -   Z[14, 2]=+2.75 Z[14, 8]=−0.52 Z[14, 18]=+0.82 Z[14, 26]=+1.10    -   Z[15, 3]=+0.90 Z[15, 10]=+1.29 Z[15, 22]=+0.90 Z[15, 29]=+2.23    -   Z[16, 0]=−0.14 Z[16, 13]=+2.42 Z[16, 17]=−0.21 Z[16, 26]=+1.18    -   Z[17, 4]=+3.37 Z[17, 11]=+0.27 Z[17, 23]=+0.37 Z[17, 30]=+1.20    -   Z[18, 5]=−0.18 Z[18, 9]=+1.42 Z[18, 18]=+0.88 Z[18, 24]=+1.08    -   Z[19, 6]=+1.40 Z[19, 15]=−0.23 Z[19, 21]=+2.54 Z[19, 31]=+1.12    -   Z[20, 7]=+1.69 Z[20, 12]=+2.16 Z[20, 16]=+0.91 Z[20, 29]=+2.05    -   Z[21, 1]=+1.80 Z[21, 14]=+1.67 Z[21, 22]=+2.42 Z[21, 28]=+0.08    -   Z[22, 2]=+1.83 Z[22, 10]=+1.60 Z[22, 20]=+0.28 Z[22, 25]=+2.80    -   Z[23, 3]=+2.02 Z[23, 8]=−0.21 Z[23, 19]=+2.20 Z[23, 27]=+2.20-   Y_(mn):    -   Y[0, 0]=+0.00 Y[0, 8]=+1.26 Y[0, 16]=+1.86 Y[0, 24]=+0.86    -   Y[1, 4]=+2.62 Y[1, 14]=+0.00 Y[1, 21]=+1.65 Y[1, 25]=+2.38    -   Y[2, 5]=+0.00 Y[2, 15]=+1.30 Y[2, 22]=+1.78 Y[2, 26]=+1.08    -   Y[3, 6]=+1.31 Y[3, 9]=+0.25 Y[3, 23]=+0.41 Y[3, 27]=+1.98    -   Y[4, 7]=+3.12 Y[4, 10]=+2.54 Y[4, 17]=+0.32 Y[4, 28]=+0.00    -   Y[5, 1]=+0.92 Y[5, 11]=+0.00 Y[5, 18]=+0.55 Y[5, 29]=+2.88    -   Y[6, 2]=+1.27 Y[6, 12]=+2.65 Y[6, 19]=+1.60 Y[6, 30]=+0.87    -   Y[7, 3]=+1.78 Y[7, 13]=+1.37 Y[7, 20]=+0.65 Y[7, 31]=+1.02    -   Y[8, 0]=+0.15 Y[8, 12]=+3.39 Y[8, 23]=+0.78 Y[8, 25]=+3.54    -   Y[9, 4]=+3.50 Y[9, 15]=+0.17 Y[9, 17]=+0.00 Y[9, 24]=+0.89    -   Y[10, 5]=+0.52 Y[10, 14]=+1.69 Y[10, 20]=+1.51 Y[10, 30]=+2.10    -   Y[11, 6]=+1.64 Y[11, 11]=+1.41 Y[11, 16]=+2.13 Y[11, 28]=+0.00    -   Y[12, 7]=+2.54 Y[12, 13]=+0.76 Y[12, 21]=+2.44 Y[12, 27]=+1.96    -   Y[13, 1]=+0.96 Y[13, 9]=+0.00 Y[13, 19]=+1.98 Y[13, 31]=+1.04    -   Y[14, 2]=+2.75 Y[14, 8]=+0.00 Y[14, 18]=+0.82 Y[14, 26]=+1.10    -   Y[15, 3]=+0.90 Y[15, 10]=+1.29 Y[15, 22]=+0.90 Y[15, 29]=+2.23    -   Y[16, 0]=+0.00 Y[16, 13]=+2.42 Y[16, 17]=+0.00 Y[16, 26]=+1.18    -   Y[17, 4]=+3.37 Y[17, 11]=+0.27 Y[17, 23]=+0.37 Y[17, 30]=+1.20    -   Y[18, 5]=+0.00 Y[18, 9]=+1.42 Y[18, 18]=+0.88 Y[18, 24]=+1.08    -   Y[19, 6]=+1.40 Y[19, 15]=+0.00 Y[19, 21]=+2.54 Y[19, 31]=+1.12    -   Y[20, 7]=+1.69 Y[20, 12]=+2.16 Y[20, 16]=+0.91 Y[20, 29]=+2.05    -   Y[21, 1]=+1.80 Y[21, 14]=+1.67 Y[21, 22]=+2.42 Y[21, 28]=+0.08    -   Y[22, 2]=+1.83 Y[22, 10]=+1.60 Y[22, 20]=+0.28 Y[22, 25]=+2.80    -   Y[23, 3]=+2.02 Y[23, 8]=+0.00 Y[23, 19]=+2.20 Y[23, 27]=+2.20-   X_(mn):    -   X[0, 0]=1 X[0, 8]=0 X[0, 16]=1 X[0, 24]=1    -   X[1, 4]=0 X[1, 14]=1 X[1, 21]=1 X[1, 25]=0    -   X[2, 5]=1 X[2, 15]=1 X[2, 22]=1 X[2, 26]=0    -   X[3, 6]=1 X[3, 9]=0 X[3, 23]=0 X[3, 27]=1    -   X[4, 7]=0 X[4, 10]=1 X[4, 17]=0 X[4, 28]=0    -   X[5, 1]=1 X[5, 11]=1 X[5, 18]=1 X[5, 29]=1    -   X[6, 2]=1 X[6, 12]=0 X[6, 19]=0 X[6, 30]=1    -   X[7, 3]=1 X[7, 13]=0 X[7, 20]=0 X[7, 31]=1    -   X[8, 0]=1 X[8, 12]=0 X[8, 23]=0 X[8, 25]=0    -   X[9, 4]=0 X[9, 15]=1 X[9, 17]=0 X[9, 24]=1    -   X[10, 5]=1 X[10, 14]=1 X[10, 20]=0 X[10, 30]=1    -   X[11, 6]=1 X[11, 11]=1 X[11, 16]=1 X[11, 28]=1    -   X[12, 7]=0 X[12, 13]=0 X[12, 21]=1 X[12, 27]=1    -   X[13, 1]=1 X[13, 9]=0 X[13, 19]=0 X[13, 31]=1    -   X[14, 2]=1 X[14, 8]=1 X[14, 18]=1 X[14, 26]=0    -   X[15, 3]=1 X[15, 10]=1 X[15, 22]=1 X[15, 29]=1    -   X[16, 0]=1 X[16, 13]=0 X[16, 17]=0 X[16, 26]=0    -   X[17, 4]=0 X[17, 11]=1 X[17, 23]=0 X[17, 30]=1    -   X[18, 5]=1 X[18, 9]=0 X[18, 18]=1 X[18, 24]=1    -   X[19, 6]=1 X[19, 15]=1 X[19, 21]=1 X[19, 31]=1    -   X[20, 7]=0 X[20, 12]=0 X[20, 16]=1 X[20, 29]=1    -   X[21, 1]=1 Y[21, 14]=1 X[21, 22]=1 X[21, 28]=0    -   X[22, 2]=1 X[22, 10]=1 X[22, 20]=0 X[22, 25]=0    -   X[23, 3]=1 X[23, 8]=1 X[23, 19]=0 X[23, 27]=1        Then a test codeword is formed as reconstructed codeword-   C={C_(i)}:    -   0111001000110011    -   1110011010011111

The test codeword C is such that HC^(T)≠0, and a second iteration ismade. Iteration 2 begins with computing new check sums and new minimumparity check reliabilities, Y_(mn-min), as,

-   check sums, S_(mn):    -   S[0, 0]=1 S[0, 8]=0 S[0, 16]=1 S[0, 24]=1    -   S[1, 4]=0 S[1, 14]=0 S[1, 21]=0 S[1, 25]=0    -   S[2, 5]=1 S[2, 15]=1 S[2, 22]=1 S[2, 26]=1    -   S[3, 6]=0 S[3, 9]=0 S[3, 23]=0 S[3, 27]=0    -   S[4, 7]=1 S[4, 10]=1 S[4, 17]=1 S[4, 28]=1    -   S[5, 1]=0 S[5, 11]=0 S[5, 18]=0 S[5, 29]=0    -   S[6, 2]=0 S[6, 12]=0 S[6, 19]=0 S[6, 30]=0    -   S[7, 3]=0 S[7, 13]=0 S[7, 20]=0 S[7, 31]=0    -   S[8, 0]=1 S[8, 12]=0 S[8, 23]=1 S[8, 25]=1    -   S[9, 4]=0 S[9, 15]=0 S[9, 17]=0 S[9, 24]=0    -   S[10, 5]=1 S[10, 14]=1 S[10, 20]=1 S[10, 30]=1    -   S[11, 6]=1 S[11, 11]=1 S[11, 16]=1 S[11, 28]=1    -   S[12, 7]=0 S[12, 13]=0 S[12, 21]=0 S[12, 27]=0    -   S[13, 1]=0 S[13, 9]=0 S[13, 19]=0 S[13, 31]=0    -   S[14, 2]=1 S[14, 8]=1 S[14, 18]=1 S[14, 26]=1    -   S[15, 3]=0 S[15, 10]=0 S[15, 22]=0 S[15, 29]=0    -   S[16, 0]=1 S[16, 13]=1 S[16, 17]=1 S[16, 26]=1    -   S[17, 4]=0 S[17, 11]=0 S[17, 23]=0 S[17, 30]=0    -   S[18, 5]=1 S[18, 9]=1 S[18, 18]=1 S[18, 24]=1    -   S[19, 6]=0 S[19, 15]=0 S[19, 21]=0 S[19, 31]=0    -   S[20, 7]=0 S[20, 12]=0 S[20, 16]=0 S[20, 29]=0    -   S[21, 1]=1 S[21, 14]=1 S[21, 22]=1 S[21, 28]=1    -   S[22, 2]=0 S[22, 10]=0 S[22, 20]=0 S[22, 25]=0    -   S[23, 3]=1 S[23, 8]=1 S[23, 19]=1 S[23, 27]=1-   Y_(mn-min):    -   Y[0, 0]min=+0.86 Y[0, 8]min=+0.00 Y[0, 16]min=+0.00 Y[0,        24]min=+0.00    -   Y[1, 4]min=+0.00 Y[1, 14]min=+1.65 Y[1, 21]min=+0.00 Y[1,        25]min=+0.00    -   Y[2, 5]min=+1.08 Y[2, 15]min=+0.00 Y[2, 22]min=+0.00 Y[2,        26]min=+0.00    -   Y[3, 6]min=+0.25 Y[3, 9]min=+0.41 Y[3, 23]min=+0.25 Y[3,        27]min=+0.25    -   Y[4, 7]min=+0.00 Y[4, 10]min=+0.00 Y[4, 17]min=+0.00 Y[4,        28]min=+0.32    -   Y[5, 1]min=+0.00 Y[5, 11]min=+0.55 Y[5, 18]min=+0.00 Y[5,        29]min=+0.00    -   Y[6, 2]min=+0.87 Y[6, 12]min=+0.87 Y[6, 19]min=+0.87 Y[6,        30]min=+1.27    -   Y[7, 3]min=+0.65 Y[7, 13]min=+0.65 Y[7, 20]min=+1.02 Y[7,        31]min=+0.65    -   Y[8, 0]min=+0.78 Y[8, 12]min=+0.15 Y[8, 23]min=+0.15 Y[8,        25]min=+0.15    -   Y[9, 4]min=+0.00 Y[9, 15]min=+0.00 Y[9, 17]min=+0.17 Y[9,        24]min=+0.00    -   Y[10, 5]min=+1.51 Y[10, 14]min=+0.52 Y[10, 20]min=+0.52 Y[10,        30]min=+0.52    -   Y[11, 6]min=+0.00 Y[11, 11]min=+0.00 Y[11, 16]min=+0.00 Y[11,        28]min=+1.41    -   Y[12, 7]min=+0.76 Y[12, 13]min=+1.96 Y[12, 21]min=+0.76 Y[12,        27]min=+0.76    -   Y[13, 1]min=+0.00 Y[13, 9]min=+0.96 Y[13, 19]min=+0.00 Y[13,        31]min=+0.00    -   Y[14, 2]min=+0.00 Y[14, 8]min=+0.82 Y[14, 18]min=+0.00 Y[14,        26]min=+0.00    -   Y[15, 3]min=+0.90 Y[15, 10]min=+0.90 Y[15, 22]min=+0.90 Y[15,        29]min=+0.90    -   Y[16, 0]min=+0.00 Y[16, 13]min=+0.00 Y[16, 17]min=+0.00 Y[16,        26]min=+0.00    -   Y[17, 4]min=+0.27 Y[17, 11]min=+0.37 Y[17, 23]min=+0.27 Y[17,        30]min=+0.27    -   Y[18, 5]min=+0.88 Y[18, 9]min=+0.00 Y[18, 18]min=+0.00 Y[18,        24]min=+0.00    -   Y[19, 6]min=+0.00 Y[19, 15]min=+1.12 Y[19, 21]min=+0.00 Y[19,        31]min=+0.00    -   Y[20, 7]min=+0.91 Y[20, 12]min=+0.91 Y[20, 16]min=+1.69 Y[20,        29]min=+0.91    -   Y[21, 1]min=+0.08 Y[21, 14]min=+0.08 Y[21, 22]min=+0.08 Y[21,        28]min=+1.67    -   Y[22, 2]min=+0.28 Y[22, 10]min=+0.28 Y[22, 20]min=+1.60 Y[22,        25]min=+0.28    -   Y[23, 3]min=+0.00 Y[23, 8]min=+2.02 Y[23, 19]min=+0.00 Y[23,        27]min=+0.00        The threshold has been assigned for iterations 1, 2, and 3 as        the minimum value of the updated bit reliabilities (comparison        bit reliabilities), Z_(n), calculated in the first iteration.        Thus, in this iteration the threshold is set at −1.04 as in the        first iteration. The updated bit reliabilities (comparison bit        reliabilities), Z_(n), for the second iteration are determined        to be:-   Z_(n):

−1.41 +1.39 +1.67 +2.38 +2.65 −2.76 +1.70 +3.62

−2.76 +1.52 +2.37 +1.11 +3.48 +2.77 +1.99 +1.18

+2.70 +0.59 +0.78 +2.41 +2.94 +2.20 +2.46 +0.83

+0.94 +2.21 +−1.31 +2.92 −2.72 +2.85 +2.42 +1.47

The second iteration comparison reliabilities, Z_(mn), are formed andthe second iteration parity check reliabilities, Y_(mn), and associatedhard decisions, X_(mn), are updated as

-   Z_(mn):    -   Z[0, 0]=−0.38 Z[0, 8]=−1.26 Z[0, 16]=+1.86 Z[0, 24]=+0.86    -   Z[0, 0]=−0.55 Z[0, 8]=−2.76 Z[0, 16]=+2.70 Z[0, 24]=+0.94    -   Z[1, 4]=+2.65 Z[1, 14]+0.34 Z[1, 21]+2.20 Z[1, 25]+2.21    -   Z[2, 5]=−1.68 Z[2, 15]+1.18 Z[2, 22]+2.46 Z[2, 26]+1.31    -   Z[3, 6]=+1.44 Z[3, 9]=+1.10 Z[3, 23]=+0.57 Z[3, 27]=+2.67    -   Z[4, 7]=+3.62 Z[4, 10]=+2.37 Z[4, 17]=+0.59 Z[4, 28]=−2.40    -   Z[5, 1]=+1.39 Z[5, 11]=+0.55 Z[5, 18]=+0.78 Z[5, 29]=+2.85    -   Z[6, 2]=+0.80 Z[6, 12]=+2.62 Z[6, 19]=+1.54 Z[6, 30]=+1.15    -   Z[7, 3]=+1.73 Z[7, 13]=+2.12 Z[7, 20]=+1.92 Z[7, 31]=+0.83    -   Z[8, 0]=−0.63 Z[8, 12]=+3.64 Z[8, 23]=+0.98 Z[8, 25]=+2.37    -   Z[9, 4]=+2.65 Z[9, 15]=+1.18 Z[9, 17]+0.42 Z[9, 24]=+0.94    -   Z[10, 5]=−1.24 Z[10, 14]=+2.51 Z[10, 20]=+3.46 Z[10, 30]=+2.94    -   Z[11, 6]=+1.70 Z[11, 11]=+1.11 Z[14, 16]=+2.70 Z[11, 28]=−1.30    -   Z[12, 7]=+2.86 Z[12, 13]=+0.80 Z[12, 21]=+1.44 Z[12, 27]=+2.16    -   Z[13, 1]=+1.39 Z[13, 9]=+0.55 Z[13, 19]=+2.41 Z[13, 31]=+1.47    -   Z[14, 2]=+1.67 Z[14, 8]=−1.94 Z[14, 18]=+0.78 Z[14, 26]=+1.31    -   Z[15, 3]=+1.47 Z[15, 10]=+1.48 Z[15, 22]=+1.56 Z[15, 29]=+1.95    -   Z[16, 0]=−1.41 Z[16, 13]=+2.77 Z[16, 17]=+0.59 Z[16, 26]=+1.31    -   Z[17, 4]=+2.38 Z[17, 11]=+0.74 Z[17, 23]=+0.55 Z[17, 30]=+2.15    -   Z[18, 5]=−1.88 Z[18, 9]=+1.52 Z[18, 18]=+0.78 Z[18, 24]=+0.94    -   Z[19, 6]=+1.70 Z[19, 15]=+0.05 Z[19, 21]=+2.20 Z[19, 31]=+1.47    -   Z[20, 7]=+2.71 Z[20, 12]=+2.58 Z[20, 16]=+1.01 Z[20, 29]=+1.94    -   Z[21, 1]=+1.47 Z[21, 14]=+2.08 Z[21, 22]=+2.55 Z[21, 28]=−1.04    -   Z[22, 2]=+1.38 Z[22, 10]=+2.09 Z[22, 20]=+1.34 Z[22, 25]=+1.93    -   Z[23, 3]=+2.38 Z[23, 8]=−0.74 Z[23, 19]=+2.41 Z[23, 27]=+2.92-   Y_(mn):    -   Y[0, 0]=+0.00 Y[0, 8]=+2.76 Y[0, 16]=+2.70 Y[0, 24]=+0.94    -   Y[1, 4]=+2.65 Y[1, 14]=+0.34 Y[1, 21]=+2.20 Y[1, 25]=+2.21    -   Y[2, 5]=+1.68 Y[2, 15]=+1.18 Y[2, 22]=+2.46 Y[2, 26]=+1.31    -   Y[3, 6]=+1.44 Y[3, 9]=+1.10 Y[3, 23]=+0.57 Y[3, 27]=+2.67    -   Y[4, 7]=+3.62 Y[4, 10]=+2.37 Y[4, 17]=+0.59 Y[4, 28]=+2.40    -   Y[5, 1]=+1.39 Y[5, 11]=+0.55 Y[5, 18]=+0.78 Y[5, 29]=+2.85    -   Y[6, 2]=+0.80 Y[6, 12]=+2.62 Y[6, 19]=+1.54 Y[6, 30]=+1.15    -   Y[7, 3]=+1.73 Y[7, 13]=+2.12 Y[7, 20]=+1.92 Y[7, 31]=+0.83    -   Y[8, 0]=+0.00 Y[8, 12]=+3.64 Y[8, 23]=+0.98 Y[8, 25]=+2.37    -   Y[9, 4]=+2.65 Y[9, 15]=+−1.18 Y[9, 17]=+0.42 Y[9, 24]=+0.94    -   Y[10, 5]=+1.24 Y[10, 14]=+2.51 Y[10, 20]=+3.46 Y[10, 30]=+2.94    -   Y[11, 6]=+1.70 Y[11, 11]=+1.11 Y[11, 16]=+2.70 Y[11, 28]=+1.30    -   Y[12, 7]=+2.86 Y[12, 13]=+0.80 Y[12, 21]=+1.44 Y[12, 27]=+2.16    -   Y[13, 1]=+1.39 Y[13, 9]=+0.55 Y[13, 19]=+2.41 Y[13, 31]=+1.47    -   Y[14, 2]=+1.67 Y[14, 8]=+1.94 Y[14, 18]=+0.78 Y[14, 26]=+1.31    -   Y[15, 3]=+1.47 Y[15, 10]=+1.48 Y[15, 22]=+1.56 Y[15, 29]=+1.95    -   Y[16, 0]=+1.41 Y[16, 13]=+2.77 Y[16, 17]=+0.59 Y[16, 26]=+1.31    -   Y[17, 4]=+2.38 Y[17, 11]=+0.74 Y[17, 23]=+0.55 Y[17, 30]=+2.15    -   Y[18, 5]=+1.88 Y[18, 9]=+1.52 Y[18, 18]=+0.78 Y[18, 24]=+0.94    -   Y[19, 6]=+1.70 Y[19, 15]=+0.05 Y[19, 21]=+2.20 Y[19, 31]=+1.47    -   Y[20, 7]=+2.71 Y[20, 12]=+2.58 Y[20, 16]=+1.01 Y[20, 29]=+1.94    -   Y[21, 1]=+1.47 Y[21, 14]=+2.08 Y[21, 22]=+2.55 Y[21, 28]=+1.04    -   Y[22, 2]=+1.38 Y[22, 10]=+2.09 Y[22, 20]=+1.34 Y[22, 25]=+1.93    -   Y[23, 3]=+2.38 Y[23, 8]=+0.00 Y[23, 19]=+2.41 Y[23, 27]=+2.92        X_(mn):    -   X[0, 0]=1 X[0, 8]=0 X[0, 16]=1 X[0, 24]=1    -   X[1, 4]=0 X[1, 14]=1 X[1, 21]=1 X[1, 25]=0    -   X[2, 5]=0 X[2, 15]=1 X[2, 22]=1 X[2, 26]=0    -   X[3, 6]=1 X[3, 9]=0 X[3, 23]=0 X[3, 27]=1    -   X[4, 7]=0 X[4, 10]=1 X[4, 17]=0 X[4, 28]=1    -   X[5, 1]=1 X[5, 11]=1 X[5, 18]=1 X[5, 29]=1    -   X[6, 2]=1 X[6, 12]=0 X[6, 19]=0 X[6, 30]=1    -   X[7, 3]=1 X[7, 13]=0 X[7, 20]=0 X[7, 31]=1    -   X[8, 0]=1 X[8, 12]=0 X[8, 23]=0 X[8, 25]=0    -   X[9, 4]=0 X[9, 15]=1 X[9, 17]=0 X[9, 24]=1    -   X[10, 5]=0 X[10, 14]=1 X[10, 20]=0 X[10, 30]=1    -   X[11, 6]=1 X[11, 11]=1 X[11, 16]=1 X[11, 28]=1    -   X[12, 7]=0 X[12, 13]=0 X[12, 21]=1 X[12, 27]=1    -   X[13, 1]=1 X[13, 9]=0 X[13, 19]=0 X[13, 31]=1    -   X[14, 2]=1 X[14, 8]=0 X[14, 18]=1 X[14, 26]=0    -   X[15, 3]=1 X[15, 10]=1 X[15, 22]=1 X[15, 29]=1    -   X[16, 0]=0 X[16, 13]=0 X[16, 17]=0 X[16, 26]=0    -   X[17, 4]=0 X[17, 11]=1 X[17, 23]=0 X[17, 30]=1    -   X[18, 5]=0 X[18, 9]=0 X[18, 18]=11 X[18, 24]=1    -   X[19, 6]=1 X[19, 15]=1 X[19, 21]=1 X[19, 31]=1    -   X[20, 7]=0 X[20, 12]=0 X[20, 16]=11 X[20, 29]=1    -   X[21, 1]=1 X[21, 14]=1 X[21, 22]=1 X[21, 28]=1    -   X[22, 2]=1 X[22, 10]=1 X[22, 20]=0 X[22, 25]=0    -   X[23, 3]=1 X[23, 8]=1 X[23, 19]=0 X[23, 27]=1        Then the test codeword is formed as reconstructed codeword-   C={C_(i)}    -   0111001000110011    -   1010011010011111        The test codeword C is such that HC^(T)=0, and the decoding is        ended with the decoding considered as successful. Iterations 3-5        are not needed in this example, and the iterations are        terminated. Though a second value was selected and scheduled for        use in iterations 4 and 5, it was not needed. This example of an        implementation of an embodiment for a multiple threshold        decoding scheme and is not intended as a limitation to the        various embodiments of the present invention.

Various embodiments for decoding a received codeword using amulti-valued threshold can be applied to any low density parity checkcode. In such embodiments, as the weight of the parity check weight isdecreased, the decoding quality is increased. These embodiments may beapplied in a method providing small complexity to the decoding scheme.Various combinations for providing the multiple threshold values duringthe iteration process can be used depending on the allowable complexitydesired for a given application. Additional reduction in complexity isprovided using embodiments of the multiple-threshold decoding methodsince these embodiments can operate in hardware implementations withoutfloating point numbers, which eliminates complexity and expense.Embodiments for a multiple-threshold decoding scheme allows for pipelineand/or parallel processing in hardware implementations since the use ofa multi-valued threshold can provide a fast decoding scheme.

Embodiments for a multiple-threshold decoding scheme may be adapted tobe used in any system operating with a communication channel. Thecommunication channel may be part of a land based communication networkor a wireless communication network. Indeed, embodiments of the presentinvention may well be implemented as part of any wireless system usingmulti-carrier wireless communication channels (e.g., orthogonalfrequency-division multiplexing (OFDM), discrete multi-tone modulation(DMT), etc.), such as may be used within, without limitation, a wirelesspersonal area network (WPAN), a wireless local area network (WLAN), awireless metropolitan area network (WMAN), a wireless wide area network(WWAN), a cellular network, a third generation (3G) network, a fourthgeneration (4G) network, a universal mobile telephone system (UMTS), andsimilar communication systems.

In various embodiments, data is provided by decoding codewords receivedfrom a communication channel. Decoding schemes employed may usethresholds in the decoding process. Thresholds in an iterative decodingprocess may be viewed as criteria against which a comparison may be madeto control subsequent activities in the process. An embodiment includesa decoder having a multi-threshold decision scheme. By multi-thresholddecision scheme, it is meant that a threshold value is changed to acomputed value or a predefined value during one or more decodingiterations. In a multi-threshold decoder, the threshold may havedifferent values during different iterative segments of the decodingprocess. Embodiments for decoding schemes and apparatus adapted to suchschemes include application of a multi-threshold decoder using anadaptive threshold selection and a fixed threshold selection. In anembodiment, during the first iteration a maximum threshold value (byabsolute value) is used and in following iterations, a change ofthreshold is applied in which the threshold decreases. Changing thethreshold values allows the use of a high threshold value during thefirst iteration leading to an absence, or reduction, of errorpropagation. Thus, if the decoder corrects even a small number oferrors, the decoding at following iterations becomes significantlyeasier. Use of an embodiment of the multi-threshold decoding scheme maylead to a decrease in the number of iterations made during decoding.

In an adaptive threshold selection, a threshold may be computed duringeach decoder iteration or may be computed in the first decoder iterationand then used in subsequent decoding iterations. In an adaptivethreshold approach, the decoder needs no additional information aboutthe parameters of the communication channel, such as noise dispersion,in which the signal carrying the codeword propagates. Though an adaptivethreshold selection scheme may operate independent of channel parametercharacterization, decoders operating with an adaptive thresholdselection use additional time during decoding to calculate thresholds,whether the decoder is software based or hardware based. Further, in ahardware implementation, a large number of elementary logic blocks maybe used to perform the decoding.

In an embodiment for decoding using a fixed thresholds selection scheme,a decoder uses predefined thresholds. Usage of fixed thresholdsdecreases decoder complexity. The thresholds for a multi-thresholddecoder are not constant and depend on a variety of parameters, such aschannel signal-to-noise ratio, SNR, the code construction for generatingthe codeword, and the code length. Fixed values for a threshold may beselected separately for each codeword construction aid code length. Inan embodiment, the codeword may be realized as a low density paritycheck (LDPC) codeword.

In an embodiment, the functioning of a multi-threshold decoder in anadditive white Gaussian noise (AWGN) channel is simulated for somechannel parameter. An embodiment of a multi-threshold decoder asillustrated in FIG. 1 or 6 may be used in a simulation to determinevalues for the threshold. A thresholds table is formed having one ormore values for different values of the channel parameter. In anembodiment, information about the channel parameter is provided by achannel estimation unit configured in an active transmissionarchitecture. The channel estimation unit and the multi-thresholddecoder may be arranged to jointly decode codewords in a signal. In anembodiment, the channel estimation unit gives information about thechannel parameter to the decoder, and the decoder selects a plurality ofthresholds for the given channel parameter from the predefinedthresholds table. Usage information about channel parameter valuesgenerates additional information to the decoder, which increases thedecoder performance. Further, usage of a predefined thresholds tableallows for the quick selection of threshold values based on channelconditions, which increases decoding speed without quality loss comparedto an adaptive thresholds selection scheme.

FIG. 7 shows a flow diagram of an embodiment of a method for iterativelydecoding data received from a communication channel using a set of fixedthresholds. At 720, a plurality of thresholds is acquired. The pluralityof thresholds may be acquired by accessing a table or other form ofdatabase in which these thresholds may be stored. Such tables ordatabases may be reside in the apparatus or system performing thedecoding or may reside external to such an apparatus or system.

The plurality of thresholds may be realized as a threshold table invarious embodiments. The following table is a non-limiting example ofentries for a few codes and SNR values that may populate a thresholdtable:

EG(255, Eric(2000, Infenion(2400, PEG(504, RS(2048, Vand(1000, SNR 175)1600) 1800) 252) 1649) 757) 2.00 −1.703209 −1.013369 −1.473104 −2.696182−0.830832 −0.918977 2.25 −1.797118 −1.049672 −1.539172 −2.738346−0.869202 −0.960916 2.50 −1.919731 −1.096213 −1.598608 −2.873956−0.896573 −0.987151 2.75 −2.035528 −1.121660 −1.686542 −2.973981−0.951840 −1.025731 3.00 −2.147337 −1.170183 −1.754481 −3.105872−1.003469 −1.069663 3.25 −2.283049 −1.209998 −1.818938 −3.250985−1.069735 −1.123508 3.50 −2.440478 −1.250196 −1.913103 −3.353540−1.150105 −1.180198 3.75 −2.623968 −1.297393 −2.004750 −3.489512−1.237858 −1.229442 4.00 −2.804447 −1.352606 −2.083417 −3.634091−1.330557 −1.304540 4.25 −2.999468 −1.397764 −2.167832 −3.753314−1.433518 −1.354703 4.50 −3.205640 −1.441435 −3.866233 −1.546978−1.419868In this table, the numbers in parenthesis represent the code length andlength, respectively. The following provides a list of the codes in theabove table:

EG(255,175) Construction: LDPC codes based on Euclidian geometries,Length: 255, Message length: 175 (See, Y. Kou, S. Lin, and Marc P. C.Fossorier. Low-Density Pality-Check Codes Based on Finite Geometries: ARediscovery and New Results, IEEE Transactions on Information Theory,47(7), November 2001.)

Eric(2000,1600) Construction:

-   -   LDPC code from Bo Xia construction, Length: 2000, Message        length: 1600 (See, Eric Jacobsen, Intel LDPC Code Technical        Description, Oct. 27, 2003, V0.01)

Infenion(2400,1800) Construction: LDPC code, Infenion construction,Length: 2400, Message length: 1800 (A technical presentation by InfenionTechnologies.)

-   -   PEG(504,252) Construction: LDPC code obtained by Progressive        Edge Growth algorithm, Length: 504, Message length: 252 (See,        X.-Y. Hu, E. Eleftheriou, D.-M. Arnold. Regular and Irregular        Progressive Edge-Growth Tanner Graphs. IBM Research, Zurich        Research Laboratory, 2003.)    -   RS(2048,1649) Construction: LDPC code from Reed-Solomon codes        with 2 information symbols, Length: 2048, Message length: 1649        (See, I. Djurdjevic, J. Xu, K. Abdel-GhaRar, and S. Lin, A Class        of Low-Density Parity-Check Codes Constructed Based on        Reed-Solomon Codes With Two Information Symbols. IEEE        Communications Letters, 7(7), July 2003.)    -   Vanid(1000, 757) Construction: LDPC code based on        Vandermondematrix and cyclic permutation blocks, Length:

-   1000, Message length: 757. (See, E. Krouk et al. 10G Ethernet.    Technical report, Intel Nizhny Novgorod, Lab, March 2004).

-   These LPDC code constructions are provided as examples, where such    type of code constructions can be understood by those skilled in the    art.

In an embodiment, for each value of SNR and each code construction, thethreshold has one value, typically applied to at least the firstiteration of a decoding scheme, where at least one additional fixedvalue of the threshold is provided in the decoding scheme. Theadditional fixed value may be zero for the second iteration andsubsequent iterations of the decoding scheme. Alternatively, a thresholdtable may include a number of entries for a channel parameter, and foreach entry for the channel parameter, the threshold parameter mayinclude a plurality of values of the threshold, where an indicator orindicators are provided that signify during which iteration a particularthreshold value is used. Associated with the threshold table may be avalue for the maximum number of iterations to be used before determiningthat the codeword is not to be decoded. Such a table may also include anumber of different channel parameters, where the values for eachchannel parameter have its associated plurality of threshold values.

The thresholds for a multi-threshold decoder are not constant, butdepend on various parameters such as the channel signal to noise ratio(SNR), the code construction, and the code length. For each codewordconstruction and code length, a separate set of fixed thresholds may beselected. Each type of code implemented may have its own set of fixedthresholds. In an embodiment, the codeword may be realized as a lowdensity parity check (LDPC) codeword. In an embodiment, the set of fixedthresholds may be determined by simulating a multi-threshold decoder. Inan embodiment, the operation of a multi-threshold decoder is simulatedwith respect to a channel parameter. The channel parameter may be a SNR.In an embodiment, the channel parameter may be a noise dispersion. Theset of channel parameters may be a set of standard deviations correlatedto channel parameters. Other statistical variations in a simulatedchannel may be implemented to determine thresholds for the decodingprocess.

In an embodiment, the operation a multi-threshold decoder to an AWGNchannel is simulated with respect to a selected channel parameter. In anembodiment, for some SNR, the simulation provides multiple thresholds toperform the decoding. An average value of the thresholds used in thesimulation decoding may be calculated. A threshold table may be formedhaving entries for different values of SNRs or different noisedispersions. The threshold table is not limited to different values ofSNRs or noise dispersions, but may be based on other channel parameters.The threshold table may contain multiple values of a decoding thresholdfor each value of the channel parameter. Each of the multiple values ofthe threshold may be assigned to specific iterations of the decodingscheme to decode the codeword. The subsequent use of the threshold tableto iteratively decode a codeword received in the communication channelprovides a set of fixed values for the multiple thresholds to amulti-threshold decoder. Determining the set of multiple thresholds foreach value of a channel parameter is not limited to a simulationprocess. Other processes may be implemented to determine the set ofmulti-valued thresholds.

At 730, a codeword is received from a communication channel. Thecodeword may be embedded in a signal propagating in the communicationchannel. The codeword may represent information that is transmitted in acommunication channel, where the information is encoded or converted tocodewords to be transmitted in the communication channel. The use ofcodewords to transmit information allows for the application of errorcorrection methods to the transmission of the information. Thecommunication channel may be an integral part of a larger communicationnetwork or a channel in an apparatus that implements high speed datatransmission.

At 740, the plurality of thresholds is used to iteratively decode thecodeword. Decoding of codewords may be implemented using multiple valuesfor a threshold in the decoding scheme in which the multiple values areselected from the plurality of thresholds. These thresholds have fixedvalues, which have been determined before decoding the codeword. In anembodiment, the thresholds are selected prior to receiving the codeword.In an embodiment, the decoder may select the plurality of thresholds byselecting one value of a threshold to be used in one or more iterationswith another value of the threshold fixed by the decoding scheme.

In an embodiment, a decoding scheme, having features illustrated in FIG.7, may be implemented by modifying features of the decoding schemeillustrated in FIGS. 1 and/or 6. Such modification includes the use ofpredetermined values of the threshold rather than calculating values ofthe threshold during the decoding process. An embodiment illustrated byFIG. 6 may be used to simulate the decoding process to determine a setof fixed threshold values. Selection of the set of fixed values to usemay depend on parameters of the communication channel.

FIG. 8 shows a flow diagram of an embodiment of a method for selectingmultiple thresholds to iteratively decode information received from acommunication channel. At 815, information is received in a decoderabout a parameter of the channel through which signals containingcodewords propagate. The information may provide one or more of avariety of properties such as the SNR or the noise dispersion of thechannel. The parameter information may be set in the decoder when thecommunication channel is constructed. In an embodiment, a parameter ofthe channel is estimated on a periodic basis and its status provided toa decoder. In an embodiment, a parameter of the channel is estimated ona continual basis and its status is provided to a decoder.Alternatively, the arrival of a signal may automatically initiatesending the parameter information to the decoder. At 825, based on thereceived information, multiple values for the threshold may be selectedfrom a table, or database, of thresholds to decode the codewords in thereceived signals. The table or database may be accessed internal orexternal to the decoder. The values may be selected by querying thetable or database prior to receiving the signals. The query may beconducted when the signal arrives. This plurality of decoding thresholdsselected from the plurality of thresholds having predefined valuescalculated before decoding a codeword may be provided to amulti-threshold decoder for decoding.

FIG. 9 shows a block diagram of an embodiment of an apparatus 900 havinga decoder 910 and threshold module 920 to iteratively decode informationusing fixed multiple thresholds. Decoder 910 receives a signal from acommunication channel and a set of multiple thresholds from thresholdmodule 920 to decode codewords in the signal to provide data. The set ofmultiple thresholds are fixed before decoder 910 begins decoding thesignal. The set of multiple thresholds may include multiple thresholdsfor each value of a parameter characterizing the channel in which thesignal propagates.

Threshold module 920 may be coupled to decoder 910 or may be constructedas an integral part of decoder 910. In an embodiment, threshold module920 contains a threshold table or a threshold database to store thepredetermined threshold value values. These threshold values may beprovided to threshold module 920 from an external system that determinesthreshold values for one or more channel parameters such as for multiplevalues of a SNR or a noise parameter. In an embodiment, the externalsystem is arranged to simulate a multi-threshold decoder based on achannel parameter. The channel parameter may include the SNR or noiseparameter of a communication channel modeled to carry the signal. In anembodiment) threshold module 920 is adapted to determine the multiplethresholds for multiple values of a channel parameter such as a SNR, anoise dispersion, or a mean noise variance. Threshold module 920 may beconfigured to use simulation techniques in such a determinationprocedure. The simulation may be modeled as operation of amulti-threshold iterative decoder operating on an AWGN channel.

FIG. 10 shows a block diagram of an embodiment of an apparatus 1000having a channel estimation unit 1030 to provide information to adecoder 1010 to select multiple thresholds to iteratively decodeinformation. Decoder 1010 receives a signal from a communication channeland a set of multiple thresholds from a threshold module 1020 to decodecodewords in the signal to provide data. Decoder 1010 may be realized asan embodiment decoder 910 of FIG. 9. Additionally, threshold module 1020may be realized as an embodiment of threshold module 920 of FIG. 9. Theset of multiple thresholds are fixed before decoder 1010 begins decodingthe signal. The set of multiple thresholds may include multiplethresholds for each value of a parameter characterizing the channel inwhich the signal propagates. The parameter characterizing the channelmay be provided to decoder 1010 from channel estimation unit 1030.

Channel estimation unit 1030 may be coupled to decoder 1010 orconfigured as an integral pair of decoder 1030. In an embodiment,channel estimation unit 1030 collects information on one or morecharacterizing parameters of the communication channel in which thesignal is propagating without being in the signal path to decoder 1010.Alternatively, the signal may propagate through channel estimation unit1030 to decoder 1010. In an embodiment, channel estimation unit 1030 maybe adapted to estimate channel parameters on a periodic basis. Channelestimation unit 1030 may be adapted to estimate channel parameters on analmost continual basis.

FIG. 11 illustrates a block diagram of an embodiment of a network 1100in which information is encoded at one end of a channel 1125 and decodedat another end of channel 1125. Network 1100 includes system 1101 incommunication with system 1102 through channel 1125. Data is provided asinformation bits 1105 to an encoder 1115. Encoder 1115 is adapted toencode information bits 1115 and send the encoded information in asignal onto channel 1125. Encoder 1115 may be adapted to encode theinformation bits to match a code construction and codeword lengthexpected by a decoder 1110 of system 1102.

System 1102 includes a channel estimation unit 1130 and a thresholdmodule 1120 in addition to decoder 1110 to decode the signal fromchannel 1125 to provide the information bits 1105 at system 1101originating from system 1101. Optionally, threshold module 1120 may berealized as an integral part of decoder 1110. In an embodiment, thecommunication between system 1101 and system 1102 is bi-directional.System 1101 may include a decoder, a threshold module, and a channelestimation unit configured in an embodiment as in system 1102. Likewise,system 1102 may include an encoder in an embodiment as in system 1101.

In an embodiment, a communication network 1100 of FIG. 11 includes asystem 1101 for encoding a low-density parity check (LPDC) codeword anda system 1102 for decoding a version of the encoded LDPC codewordreceived from communication channel 1125. Communication channel 1125 mayinclude, but is not limited to, a fiber optic channel, a wired channel,a channel reading data stored on a memory unit, or a wireless channel.Additionally, embodiments for decoding and encoding may be adapted foruse with any protocol for transmission over any communication channel.

Various embodiments for communication network 1100, system 1101, andsystem 1102 may be realized. System 1101, 1102 may be arranged asnetwork nodes 1101, 1102, respectively, where each node may representprocessing systems having a physical layer (PHY) entity arranged tooperate in accordance with 10GBase-T as defined by the IEEE 802.3 anseries of standards, for example. The 10GBase-T PHY may interface with,for example, a 10G media access control (MAC) and Gigabit MediaIndependent Interface (XGMII) in an IEEE architecture. The 10GBase-T PHYmay include part of a network interface card (NIC), for example. Networknodes 1101, 1102 may include any processing system and/or communicationsdevice suitable for use with a 10GBase-T device. For example, networknodes 1101, 1102 may be implemented as a pair of switches, a pair ofrouters, a pair of servers, a switch and a router, a switch and aserver, a server and a router, and so forth. In addition, network nodes1101, 1102 also may be part of a modular system in which 10GBase-T isthe high-speed connection for the system. In an embodiment, each ofnetwork nodes 1101, 1102 may include a host system. A host system mayprovide one or more functions at a node. A host system may directoperations of other systems and/or apparatus at the node. In anembodiment, network nodes 1101, 1102 may include a host system, wherethe host system is configured as a single host system for both networknodes 1101, 1102. Further examples for network nodes 1101, 1102 mayinclude high-end servers, supercomputers, clusters, grid computing,workgroup switch uplinks, aggregation uplinks, storage systems, and soforth. The embodiments are not limited in this context.

Communication network 1100 may be a land based network using opticalfibers, coaxial cable, or wires as a medium for the communicationchannels between various nodes of communication network 1100.Communication network 1100 may be realized as a wireless network inwhich systems 1101 and 1102 are configured as part of a node ofcommunication network 1100 or as part of a wireless receiving devicethat receives signals from the nodes of communication network 1100.System 1101 and system 1102 may be configured as part of, but notlimited to, network components such as base stations and may beconfigured as part of, but not limited to, wireless receiving devicessuch as handheld communication devices, computers, and laptop computingdevices. Though not shown, systems 1101 and 1102 configured in awireless communication system 1100 include antennas for transmitting andreceiving signals that include one more codewords. The decoding andencoding schemes and apparatus do not limit the type or configuration ofsupporting components such as antennas in the 1101, 1102 systems. In anembodiment, a substantially omnidirectional antenna is utilized.

Each node of communication network 1100 configured as a land basednetwork or as a wireless based network may contain a version of system101 and/or a version of system 1102 or a system that is a combination ofsystem 1101 and system 1102. Additionally the decoding and encodingprocesses used in the encoders and decoders of system 1101 and system1102 and other embodiments for decoding and encoding processes andapparatus as described herein may be adapted for the communicationstandards and protocols used in communication network 1100.

In an embodiment, scaling may be applied in a reliabilities updateprocedure for multi-threshold decoding. The procedure of reliabilitiesupdating in a multi-threshold (MT) decoder previously discussed hereinuses data from the channel output and the updated reliabilities from theprevious decoding iteration. These values are used to obtain the currentiteration decoding result and the set of updated reliabilities by addingor subtracting the parity-check reliability to the channel output,depending on whether or not the parity check holds. The channel outputeffectively may be considered the input of the decoder. Here, there aretwo types of inputs in the reliabilities updating procedure. The firstis the channel output and the second is the result of previous decodingiteration such that the reliabilities updating may be represented by:

$R_{new} = {R_{channel} + {\sum\limits_{{all}\mspace{14mu}{checks}}{\pm R_{{from}\mspace{14mu}{previous}\mspace{14mu}{iteration}}}}}$

For high SNRs associated with a communication channel, the channeloutput may be more trustworthy than the results of decoding iterations.In an embodiment, a “trust factor” may be introduced in the procedure ofreliabilities update. The “trust factor” may be used to increase thedecoding performance.

The “trust factor” may include scaling of the reliabilities of thechannel output and scaling of the reliabilities determined from previousiterations. The channel output may have a trust factor (scaling factor)of 1, and the previous decoding iteration results may have a smallertrust factor (scaling factor) K less than 1. Then, updating thereliabilities may be represented by:

${R_{new} = {{R_{channel} \cdot 1} + {\sum\limits_{{all}\mspace{14mu}{checks}}{{\pm R_{{from}\mspace{14mu}{previous}\mspace{14mu}{iteration}}} \cdot K}}}},{K < 1}$In an embodiment, a trust factor for the channel output may be assigneda scaling value different from 1. For instance, the channel output maybe assigned a scale factor less than one but greater than the scalefactor assigned to updating the reliabilities. In an embodiment, thevalue of the trust factor for the channel output may be assigneddifferent values dependent on the iteration number in the decodingprocess for a given codeword. In various embodiments, K may have a valueset in the range from about 0.68 to about 0.85. In an embodiment, thevalue of K may be assigned different values dependent on the iterationnumber in the decoding process for a given codeword. The value of K maybe dependent oil a LDPC code construction used in a data communicationsession and the number of ones in the columns of a LDPC codeparity-check matrix associated with a LDPC code construction used. Anincrease in decoding performance may depend on the code constructionimplemented in an application. For different LDPC code constructions,setting the value of K in the range from about 0.68 to about 0.85 mayincrease the decoding performance from 0.1 to 0.4 dB depending on theset of codes selected. There may be optimum values of K for differentLDPC code constructions.

FIG. 12 illustrates features of an embodiment of a method forgeneralized multi-threshold decoding. Generalized multi-thresholddecoding includes using a scaling factor along with multi-thresholddecoding. At 1210, an initial hard-decision vector and initialreliabilities vector are obtained. The initial hard-decision vector andinitial reliabilities vector may be produced from a soft channel output.At 1220, parity-check reliabilities are calculated. Bit reliabilitiesmay be used to calculate the parity-check reliabilities, where aparity-check reliability may be taken as a minimum bit reliability valueof all bits which are involved in the parity check.

At 1230, a threshold may be selected. In an embodiment, the thresholdmay be calculated during the iterative process. Alternatively, thethreshold may be chosen from a set of threshold valves. The set ofthreshold values may be determined in a simulation procedure thatcalculates the values in a manner similar to calculating the thresholdduring the iterative process. The set of threshold values may include aplurality of threshold values for a plurality of LDPC codeconstructions.

At 1240, bit reliability updating may be performed including scaling ofthe reliabilities. To recalculate bit reliabilities, a weightedparity-check voting procedure may be used, where the weights are theparity-check reliabilities. Initially the recalculated bit reliabilitymay be assigned a bit reliability, and then parity-check voting isapplied to the current hard-decision vector. If the parity check holds,then the recalculated bit reliability is increased by the parity-checkreliability value, otherwise, the recalculated bit reliability isdecreased by the parity-check reliability value. The recalculatedreliabilities are scaled with the scaling coefficient K, Kε[0,1). Athreshold value is used for making the decision as to whether the bitand its reliability should be updated. In an embodiment, if thereliability is less than the threshold value, then the hard decision bitis inverted and its new reliability is assigned the absolute value ofrecalculated reliability.

At 1250, a new hard decision vector, C, is generated based on theupdated bit reliabilities. At 1260, the new hard decision vectorcodeword, acting as a test codeword, may be evaluated for validity. Ifthe following relation occurs,CH^(T)≠0the iterative process returns to 1220 using the updated parity checkreliability values. In an embodiment, a generalized multiple-thresholddecoding scheme as shown in FIG. 12 may be implemented in a mannersimilar to the method discussed with respect to FIG. 1 or 6 with theadditional feature that the bit reliabilities are scaled by a factor, K,in the bit reliability updating process. In such an implementation, thethreshold value may be calculated during the iterative process orselected from a set of values determined prior to the decoding of thereceived codeword.

Embodiments of a generalized multi-threshold (GMT) decoding algorithmhaving a scaling factor similar to the embodiment illustrated in FIG. 12may provide an improvement to a multi-threshold decoding schemeillustrated in FIG. 6 for LDPC codes. While an MT decoding scheme mayuse multiple values of a threshold to provide fast LDPC decoding, a GMTdecoding scheme may provide fast LDPC decoding by using a scaling factoralong with using multiple values of a threshold.

FIG. 13 shows the BER performance of a GMT decoding scheme 1310, a MTdecoding scheme 1320, and a belief propagation decoding (BPD) scheme1330 for binary phase shift keying (BPSK) modulation and an AWGN channelin the case of a floating point implementation. The use of the scalingfactor in the GMT decoding algorithm may increase decoding performancecompared with the MT decoding by 0.1-0.4 dB. As indicated in FIG. 13,GMT performance 1310 approaches BPD performance of BPD 1330 in a channelwith Gaussian noise.

FIG. 14 shows the BER performance of a GMT decoding scheme 1410 and aBPD scheme 1430 for BPSK modulation and an AWGN channel in the case of afixed point implementation. As indicated in FIG. 14, GMT performance1410 approaches BPD performance 1430 in a channel with Gaussian noise.The use of a generalized multi-threshold decoding algorithm is notlimited to use with BPSK modulation, but may be used with othermodulation. For example, a GMT decoding scheme may be used for a 128double square (128 DSQ) modulation and AWGN, providing performance thatapproaches BPD performance for 128 DSQ modulation and AWGN.

A decoder using belief propagation decoding may be considered to providean optimum symbol decoder. However, issues regarding the complexity ofimplementation may be associated with a decoder using belief propagationdecoding. A decoder using an embodiment of a generalized multi-thresholddecoding scheme may be implemented with lower complexity than thecomplexity of a belief propagation decoder. Reduction in complexity ofimplementation may result from the use of reliabilities at the input ofa GMT decoder. With the use of these reliabilities, the calculation oflog-likelihoods ratios (LLRs) may not be required at the input of thedecoder. In various embodiments for generalized multi-thresholddecoding, while the performance a GMT-based demodulator approaches theperformance of a BPD-based demodulator, a GMT-based demodulator may beless complex, since a process to calculate or estimate LLRs in theGMT-based demodulator may not be needed.

In various embodiments, a generalized multi-threshold decoder may beimplemented in a variety of electronic apparatus. A GMT decoder may beused in high-speed communication systems, in forward error correction(FEC) for LPDC decoding in 10 Gigabit Ethernet, wireless Ethernet,high-speed modems, and in other applications for transferringinformation. An embodiment of a GMT decoder may be implemented in 10GBASE-T network cards. A GMT decoding scheme may be implemented in ademodulator providing an operation point of 23.35 dB in AWGN for a lowdensity parity-check FEC on the physical layer of a network using a2-dimensional 128DSQ mapping with (2048,1723) LDPC code. Such a GMTdecoding algorithm may be implemented in a hardware demodulation moduleof 10G Ethernet network cards, arranged to operate in accordance with10GBase-T as defined by an Institute of Electrical and ElectronicsEngineers (IEEE) 802.3 an series of standards, for example.

Various embodiments or combination of embodiments for apparatus andmethods for decoding communication signals using a generalizedmultiple-threshold scheme, as described herein, can be realized inhardware implementations, software implementations, and combinations ofhardware and software implementations. These implementations may includea machine-readable medium having machine-executable instructions forperforming a decoding method using an embodiment for a scheme having ascaling factor and multiple thresholds to update bit reliabilities foriterative decoding. The machine may be, but is not limited to, acomputer. The machine-readable medium is not limited to any one type ofmedium. The machine-readable medium used will depend on the applicationusing an embodiment of a generalized multiple thresholds scheme. In anembodiment, a processor coupled to a receiver may utilize various formsof memory to which it is coupled and the machine-readable medium todirect decoding of information. In an embodiment, the memory may storeparameters used to iteratively decode the received codeword.

FIG. 15 illustrates a block diagram of an embodiment of a system 1500having a decoder 1505 using a GMT decoding scheme. The GMT decodingscheme may use one or more scaling factors to decode a LDPC codeword,where the value of the scale factors may depend on the specific LDPCcode construction implemented and/or channel parameters for a givencommunication session. Decoder 1505 may include threshold selection 1507and reliabilities scaling 1506: Various embodiments as illustrated inFIGS. 2, 5, and 9-11 may be modified to incorporate the reliabilitiesscaling of a GMT decoding scheme. Decoder 1505 may be realized with ahardware architecture, a software based architecture, or combination ofhardware/software architecture. System 1500 may also include acontroller 1510 and a bus 1530, where bus 1530 provides a communicationpath between controller 1510 and a communication unit 1540. In anembodiment, controller 1510 is a processor. Bus 1530 may be a parallelbus. Bus 1530 may be a serial bus. Bus 1530 may be compatible withPeripheral Component Interconnect (PCI) or with PCI express. Anembodiment, system 1500 may include a memory 1520 and an additionalperipheral device or devices 1560 coupled to bus 1530. Peripheraldevices 1560 may include displays, memory, or other control devices thatmay operate in conjunction with controller 1510, communication unit1540, and/or decoder 1505.

Various embodiments for system 1500 may be realized. System 1500 may bearranged as a node, or a component of a node, in a network. The networkmay have a number of nodes, where each node may represent processingsystems having a physical layer (PHY) entity arranged to operate inaccordance with 10GBase-T as defined by the IEEE 802.3 an series ofstandards, for example. The 10GBase-T PHY may interface with, forexample, a 10G media access control (MAC) and Gigabit Media IndependentInterface (XGMII) in an IEEE architecture. The 10GBase-T PHY may includepart of a network interface card (NIC), for example. A network node maybe realized as one or more systems. A network node may include anyprocessing system and/or communications device suitable for use with a10 GBase-T device. For example, network nodes may be implemented as apair of switches, a pair of routers, a pair of servers, a switch and arouter, a switch and a server, a server and a router, and so forth. Inaddition, network nodes also may be part of a modular system in which10GBase-T is the high-speed connection for the system. Network nodes mayinclude high-end servers, supercomputers, clusters, grid computing,workgroup switch uplinks, aggregation uplinks, storage systems, and soforth. The embodiments are not limited in this context.

Communication unit 1540 may include decoder 1505. Decoder 1505 may be aseparate module in system 1500 operatively coupled to communication unit1540 to decode messages received from a communication channel. In anembodiment, communication unit 1540 may include a network interfacecard. In an embodiment, communication unit 1540 may include acommunications device suitable for use with a 10GBase-T device. In awireless embodiment, communication unit 1540 may include a connection1547 to couple to an antenna 1550. Connection 1547 may provide an inputto receive a low-density parity-check codeword. In an embodiment,antenna 1550 may be a substantially omnidirectional antenna.Communication unit 1540 may include a connection 1543 to couple to atransmission medium 1541. Connection 1543 may provide an input toreceive a low-density parity-check codeword. Transmission medium 1541may be an optical fiber medium. Transmission medium 1541 may couple to awired network. Transmission medium 1541 may be cable. Transmissionmedium 1541 may include a coaxial cable, an unshielded twisted paircable, or a shielded twisted pair cable.

System 1500 may include, but is not limited to, information handlingdevices, wireless systems, telecommunication systems, fiber opticsystems, electro-optic systems, and computers. Embodiments for ageneralized encoding scheme similar to those described herein may beadapted to be used in a system operating with a communication channel.Such embodiments may be used with an Ethernet channel, including awireless Ethernet channel. The communication channel may be part of aland based communication network or a wireless communication network.Indeed, embodiments of the present invention may well be implemented aspart of any wireless system using multi-carrier wireless communicationchannels (e.g., orthogonal frequency-division multiplexing (OFDM),discrete multi-tone modulation (DMT), etc.), such as may be used within,without limitation, a wireless personal area network (WPAN), a wirelesslocal area network (WLAN), a wireless metropolitan area network (WMAN),a wireless wide area network (WWAN), a cellular network, a thirdgeneration (3G) network, a fourth generation (4G) network, a universalmobile telephone system (UMTS), and similar communication systems.

Although specific embodiments have been illustrated and describedherein, it will be appreciated by those of ordinary skill in the altthat any arrangement that is calculated to achieve the same purpose maybe substituted for the specific embodiments shown. This application isintended to cover any adaptations or variations of embodiments of thepresent invention. It is to be understood that the above description isintended to be illustrative, and not restrictive, and that thephraseology or terminology employed herein is for the purpose ofdescription and not of limitation.

1. A method comprising: operating a decoder using a processor to perform operations to decode a codeword received from a communication channel, the operations including generating a bit reliability to iteratively decode a received codeword including generating the bit reliability based on a summation, the summation including a channel output reliability and an updated bit reliability from a previous decoding iteration, such that for each iteration the bit reliability is updated using a scaling factor with respect to the bit reliability from the previous decoding iteration and a comparison with a threshold, wherein the threshold has a plurality of threshold values during the iterative decoding.
 2. The method of claim 1, wherein the method includes selecting the scaling factor based on a predetermined low-density parity check code construction.
 3. The method of claim 1, wherein the method includes correcting one or more bits of a test codeword based on a comparison of the updated bit reliability with the threshold to provide a valid codeword, the test codeword initially generated from the received codeword.
 4. The method of claim 1, wherein the method includes applying a channel scale factor to generate the channel output reliability to update the bit reliability, the channel scale factor being less than the scaling factor.
 5. The method of claim 1, wherein the method includes: performing a soft decision process on each bit of the received codeword to generate a received vector from which a hard decision vector and bit reliabilities are generated; calculating parity-check reliabilities using the bit reliabilities; recalculating the bit reliabilities adjusted by the scaling factor; and calculating a value for the threshold.
 6. The method of claim 1, wherein the method includes acquiring the plurality of threshold values as predetermined values generated based on a communication channel parameter.
 7. The method of claim 1, wherein the method includes acquiring the plurality of threshold values form a set of predetermined values generated based on one or more low-density parity check code constructions.
 8. The method of claim 1, wherein the scale factor includes a value in the range from 0.68 to 0.85.
 9. The method of claim 1, wherein iteratively decoding a received codeword includes limiting the iteration to a number of iterations, the number of iterations equal to log₂ n, where n is a code length of the codeword.
 10. The method of claim 1, where using the comparison with the threshold includes using a threshold value computed by setting the threshold to a value selected from a set of updated bit reliabilities in a decoding activity correlated to decoding the codeword received from the communication channel, the threshold value used to decide whether the bit and its reliability should be updated.
 11. A non-transitory machine-readable medium that stores instructions, which when performed by a machine, cause the machine to: operate a decoder using a processor to perform operations to decode a codeword received from a communication channel, the operations including operations to generate a bit reliability to iteratively decode a received codeword, the generated bit reliability based on a channel output reliability and an updated bit reliability from a previous decoding iteration such that for each iteration the bit reliability is updated using a scaling factor and a comparison with a threshold, wherein the threshold has a plurality of threshold values during the iterative decoding, generating a bit reliability to iteratively decode a received codeword including generating the bit reliability based on a summation, the summation including a channel output reliability and an updated bit reliability from a previous decoding iteration, such that for each iteration the bit reliability is updated using a scaling factor with respect to the bit reliability from the previous decoding iteration and a comparison with a threshold, wherein the threshold has a plurality of threshold values during the iterative decoding.
 12. The non-transitory machine-readable medium of claim 11, wherein the instructions include instructions to correct one or more bits of a test codeword initially generated from the received codeword to provide a valid codeword.
 13. The non-transitory machine-readable medium of claim 11, wherein the instructions include instructions to provide a message word from the received codeword after iteratively decoding the received codeword.
 14. The non-transitory machine-readable medium of claim 11, wherein the instructions include instructions to: perform a soft decision process on each bit of the received codeword to generate a received vector from which a hard decision vector and bit reliabilities are generated; calculate parity-check reliabilities using the bit reliabilities; recalculate the bit reliabilities adjusted by the scaling factor; and calculate a value for the threshold.
 15. The non-transitory machine-readable medium of claim 11, wherein the instructions include instructions to acquire the plurality of threshold values form a set of predetermined values generated based on one or more low-density parity check code constructions.
 16. The non-transitory machine-readable medium of claim 11, wherein the scale factor includes a value in the range from 0.68 to 0.85.
 17. An apparatus comprising: a processor; a decoder arranged with the processor to iteratively decode a received codeword from a communication channel, the decoder including: a bit reliability generator to provide a set of bit reliabilities, each bit reliability corresponding to a bit of a received codeword acquired by the receiver; and a comparison unit using a threshold such that, for each iteration of an iterative process to decode the received codeword, the bit reliability is updated based on a summation, the summation including a channel output reliability and a bit reliability from a previous decoding iteration, such that for each iteration the bit reliability is updated using a scaling factor with respect to the bit reliability from the previous decoding iteration and a comparison with the threshold, wherein the threshold has a plurality of threshold values during the iterative decoding.
 18. The apparatus of claim 17, wherein the apparatus includes a threshold unit to store the plurality of threshold values as predetermined values generated based on a communication channel parameter.
 19. The apparatus of claim 17, wherein the apparatus includes a threshold unit to store the plurality of threshold values as predetermined values generated based on one or more low-density parity check code constructions.
 20. The apparatus of claim 17, wherein the scale factor includes a value in the range from 0.68 to 0.85.
 21. The apparatus of claim 17, wherein the apparatus includes a 10G Base-T network card in which the decoder is disposed.
 22. The apparatus of claim 17, where the plurality of threshold values includes a threshold value selected from a set of updated bit reliabilities in a decoding activity correlated to the decode of the received codeword.
 23. A system comprising: a controller; a parallel bus; and a decoder communicatively coupled to the controller through the parallel bus, the decoder to iteratively decode a received codeword, the decoder including: a bit reliability generator to provide a set of bit reliabilities, each bit reliability corresponding to a bit of a received codeword acquired by the receiver; and a comparison unit using a threshold such that, for each iteration of an iterative process to decode the received codeword, the bit reliability is updated based on a summation, the summation including a channel output reliability and a bit reliability from a previous decoding iteration, such that for each iteration the bit reliability is updated using a scaling factor with respect to the bit reliability from the previous decoding iteration and a comparison with the threshold, wherein the threshold has a plurality of threshold values during the iterative decoding.
 24. The system of claim 23, wherein the system includes a machine-readable medium that stores instructions, which when performed by the system, cause the system to control the decoder to iteratively decode the received codeword.
 25. The system of claim 24, wherein the instructions include instructions to generate the plurality of threshold values.
 26. The system of claim 23, wherein the system includes memory to store the plurality of threshold values as predetermined values generated based on a communication channel parameter.
 27. The system of claim 23, wherein the system includes a threshold unit to store the plurality of threshold values as predetermined values generated based on one or more low-density parity check code constructions.
 28. The system of claim 23, wherein the scale factor includes a value in the range from 0.68 to 0.85.
 29. The system of claim 23, wherein the system includes memory to store multiple values of the scale factor.
 30. The system of claim 23, wherein the network interface card includes a 10GBase-T network card.
 31. The system of claim 23, wherein the decoder includes an output to provide a codeword decoded from a received low-density parity check code. 